Редакторы ячеек Ag-grid с динамическими параметрами: использовать глобальную переменную

Я только начал использовать ag-grid в одном из своих проектов, и я использую редактор ячеек «agSelectCellEditor» для двух столбцов: «функция» и «роль_проекта». Параметры выбора для столбца ролей проекта зависят от значения функциональной ячейки. Это конфигурация сетки:

<ag-grid-angular
        class = "ag-theme-balham"
        style = "height: calc(100% - 100px)"
        [defaultColDef] = "demandsDefaultColDef"
        (gridReady) = "onDemandsGridReady($event)"
        (cellValueChanged) = "onDemandsCellValueChanged($event)"
        [frameworkComponents] = "frameworkComponents"
      >
        <ag-grid-column headerName = "Resource Description" headerClass = "test">
          <ag-grid-column
            field = "function"
            [cellEditor] = "'agSelectCellEditor'"
            [cellEditorParams] = "functionOptions"
            [sortable] = "true"
            [pinned] = "true"
            [width] = "140"
          ></ag-grid-column>
          <ag-grid-column
            field = "project_role"
            headerName = "Project Role"
            [cellEditor] = "'selectEditor'"
            [cellEditorParams] = "projectRoleCellEditorParams"
            [sortable] = "true"
            [pinned] = "true"
            [width] = "140"
          ></ag-grid-column>
 <ag-grid-angular/>

Я следовал документации, чтобы реализовать «Динамические параметры»:

projectRoleCellEditorParams(params){
    const selectedFunction = this.functions.find(x => x.name === params.data.function);
    const allowedProjectRoles = selectedFunction.projectRoles.map(x => x.name);
    return {
      values: allowedProjectRoles,
    };
  }

Проблема в том, что "это" не определено. Я знаю, что это проблема, связанная с областью действия javascript. Каким-то образом мне нужно предоставить «это» области projectRoleCellEditorParams. Но как я могу это сделать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
870
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел ответ сам. Вы можете использовать объект контекста .

Установите что-нибудь в контексте:

  onDemandsGridReady(params): void {
    this.demandsGridApi = params.api;
    this.demandsGridApi.context.functions = this.functions;
  }

Используйте его в функции:

 const selectedFunction = params.api.context.functions.find(
      (x) => x.name === params.data.function
    );

Другие вопросы по теме