setRowData не работает на первом вызове Angular 6 - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть ag-grid, в которой есть кнопки для изменения данных каждой строки.Когда я нажимаю кнопку, она должна показывать другую сетку в модале начальной загрузки;Но проблема в том, что когда сетка загружается в первый раз, она не показывает никаких данных, поскольку говорит «Нет строк для отображения».И когда я нажимаю второй раз, он показывает данные сетки.

Вот мой код:

OnGridReady(params){
      this.gridApi = params.api;
      this.loadQuestions();
      this.gridApi.setRowData(this.Questions);
     }

Как вы хотите узнать больше о loadQuestion()

private loadQuestion(){
    this.managementService.getQuestions().subscribe(
        (_q: Question[]) => {
             this.Questions = _q;
        },(err){ blah blah }    
    );

Можете ли вы сказать, в чем проблема?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

В ходе дальнейших исследований в Angular я обнаружил, что этот тип вызова службы является асинхронным, и нормально показывать, что «Невозможно прочитать свойство setRowData», поскольку данные не загружаются полностью.Я просто делаю это:

private loadQuestion() {
    this.Questions = [];
    this.managementService.getQuestions().subscribe(
         _q => {
             _q.forEach(element => {
                 this.Questions.push(element);
             });
             this.gridApi.setRowData(this.Questions);
         },(err){ blah blah }    
);
0 голосов
/ 04 декабря 2018

Do setRowData внутри вашего loadQuestion.

private loadQuestion(): void => {
   this.managementService.getQuestions().subscribe(
      (_q: Question[]) => {
         this.Questions = _q;
          this.gridApi.setRowData(this.Questions);
      },(err){ blah blah }    
);

Проблема, которую, я думаю, вы получили, возникла из-за того, что когда вы сделали setRowData, данные для this.Questions были недоступны.

В следующий раз, когда вы загрузите, он будет там.


Обновление

Когда вы определяете функцию в соответствии с тем, что есть в вопросе, вы можете столкнуться с приведенной ниже ошибкой.

"Невозможно прочитать свойство 'setRowData' undefined".

Вы можете использовать функцию стрелки, чтобы получить внешнюю область, доступную внутри вашей функции, согласно коду, показанному вэтот ответ.

Более подробную информацию о функции Arrow * см. по ссылке

Любовно называемая жирная стрелка (потому что -> - тонкая стрелка, а => - жирная стрелка) и также называется лямбда-функцией (из-за других языков).Другая часто используемая функция - функция жирной стрелки ()=>something.Мотивация для жирной стрелки: Вам не нужно

  1. Продолжать печатать функцию
  2. Она лексически отражает значение этого
  3. Она лексически отражает значениеаргументов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...