#angular #typescript
#угловой #машинописный текст
Вопрос:
Почему обнаружение изменений не срабатывает в приведенном ниже случае
Лица.адрес = результат.адрес
Я хочу назначить массив person.address результату.адрес
Объект результата получается из результата сохранения api. Поэтому после успешного сохранения я хочу переназначить свой массив на этот результирующий массив
Представление не обновляется после этого переназначения, оно по-прежнему отображает старые данные
Комментарии:
1. в одном месте вы написали Persons.address (с большой буквы P), в другом месте вы написали person.address, который отличается. Так что не могли бы вы, пожалуйста, поделиться фрагментом реального кода? это будет полезно. Если все в порядке, то это должно сработать.
2. Проблема, скорее всего, связана с тем, что вы изменили элементы массива, в то время как ссылки на массив остаются прежними. Если вы попытаетесь
Person.address = [...result.address];
, это должно вызвать обнаружение изменений или viaObject.assign
.
Ответ №1:
Вы пытаетесь сказать, что после обновления данных в массиве пользовательский интерфейс не обновляется.
Для этого вы можете сделать одну вещь, импортировать ChangeDetectorRef из angular/core
import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
Добавьте свойство в конструктор
constructor(private changedetectionRef:ChangeDetectorRef)
Затем один раз после обновления данных в массив, который отображается в пользовательском интерфейсе, вызовите этот метод.
this.changedetectionRef.detectChanges();
Я надеюсь, что это сработает.