Почему модель не обновляется? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть пользовательская функция:

public changeClass() {
    this.studyPlan = this.studyPlanClone.slice();
    if (this.filter.classNumber) {
      this.studyPlan = this.studyPlan.filter(study => study.classNumber == this.filter.classNumber);
    }

    console.log(this.studyPlan);
  }

И шаблон HTML это:

<tr *ngFor="let item of studyPlan"></tr>

Когда я вызываю changeClass() метод, он фильтрует существующий начальный объект и возвращает новый.

Я вижу правильный результат в консоли с 3 объектами:

enter image description here

Но на странице есть вид с предыдущим объектом studyPlan. Не отображается.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

У меня не так много кода для продолжения, но первое, что я хотел бы проверить, это если для параметра «Обнаружение изменений» установлено значение «OnPush». Это наиболее распространенная причина «Я обновил переменную в .ts, но она ничего не изменила в браузере»

Читайте об этом здесь

https://blog.angular -university.io / OnPush-изменение-детектирования, как-это работает /

Во-вторых, я не знаю, что имел в виду Суреш, вызвав его вручную с помощью таймаута и случайного вызова функции. Если вы хотите вручную активировать обнаружение изменений, используйте соответствующие классы / функции.

Импорт в конструкторе

private _cdRef: ChangeDetectorRef

А когда вы хотите обнаружить изменения, запустите

this._cdRef.detectChanges();
0 голосов
/ 27 августа 2018

Нам может потребоваться вручную запустить обнаружение изменений. Попробуйте добавить блок changeClass () внутри setTimeout ().

setTimeout(()=>{
  this.changeClass();
}, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...