Переназначение массива не вызывает обнаружения изменений в угловой

#angular #typescript

#угловой #машинописный текст

Вопрос:

Почему обнаружение изменений не срабатывает в приведенном ниже случае

Лица.адрес = результат.адрес

Я хочу назначить массив person.address результату.адрес

Объект результата получается из результата сохранения api. Поэтому после успешного сохранения я хочу переназначить свой массив на этот результирующий массив

Представление не обновляется после этого переназначения, оно по-прежнему отображает старые данные

Комментарии:

1. в одном месте вы написали Persons.address (с большой буквы P), в другом месте вы написали person.address, который отличается. Так что не могли бы вы, пожалуйста, поделиться фрагментом реального кода? это будет полезно. Если все в порядке, то это должно сработать.

2. Проблема, скорее всего, связана с тем, что вы изменили элементы массива, в то время как ссылки на массив остаются прежними. Если вы попытаетесь Person.address = [...result.address]; , это должно вызвать обнаружение изменений или via Object.assign .

Ответ №1:

Вы пытаетесь сказать, что после обновления данных в массиве пользовательский интерфейс не обновляется.

Для этого вы можете сделать одну вещь, импортировать ChangeDetectorRef из angular/core

 import { ChangeDetectorRef, Component, OnInit } from '@angular/core';  

Добавьте свойство в конструктор

 constructor(private changedetectionRef:ChangeDetectorRef)  

Затем один раз после обновления данных в массив, который отображается в пользовательском интерфейсе, вызовите этот метод.

 this.changedetectionRef.detectChanges();  

Я надеюсь, что это сработает.