ExpressionChangedAfterItHasBeenCheckedError присвоение значения массиву в подписке - PullRequest
0 голосов
/ 30 марта 2020

Я видел сотни форумов, ищущих эту ошибку, но мне не удалось найти подходящий ответ, я относительно новичок в Angular и до сих пор не могу понять, что такое ловушки жизненного цикла.

У меня есть родительское окно, у которого есть компонент, в этом компоненте я устанавливаю значение окна

<app-acciones [window]="selectedWindow"></app-acciones>

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

   @Input() window:Window;
   Actions:Action[];
   totalActions:number; //this work properly

А потом метод

getActionts(){
   this._actionService.getAction(this.window)
   .subscribe(
      actions => {
       this.totalActions = actions.total; // this works
       this.Actions = actions.actions; // this give me the error
     }
   );
}

ngOnChanges(){
   this.getActionts();
}

Я не понимаю, почему это происходит и как это решить, я был бы признателен за любую помощь , поскольку, хотя код работает «правильно», он очень раздражает и расстраивает, не зная, почему это происходит и как решить эту ошибку.

1 Ответ

0 голосов
/ 30 марта 2020

Я смотрю, что с каждым изменением вы создаете новую подписку. Вы должны изменить и вместо ngChanges вы можете использовать afterViewinit или afterContentInit. Даже вы можете создать один вид переменной Observable, чтобы напрямую передавать Observable в представление и использовать конвейер asyn c для автоматического управления подпиской и отменой подписки.

...