Угловой дочерний компонент не обновляется при обновлении родительского представления

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

Однако, когда я начал разделять свой растущий проект на пользовательские компоненты, чтобы предотвратить дублирование кода и все остальное, стало очень странно. Родитель по-прежнему обновлялся нормально, однако дочерний пользовательский компонент не получал никаких уведомлений об изменениях, несмотря на то, что данные связаны. Кроме того, это только общие данные вне родителя, любые изменения самого родителя обычно отражаются на представлениях и обновляются, как и должно быть.

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

я пробовал Tick() и различные методы в ChangeDetectorRef и я пытался поместить их в различные фазы жизненного цикла, но я в растерянности.

Вот дочерний компонент на родительском, который не получает обновление

<does-not-update [(ngModel)]='service.data.1'></does-not-update>

И вот тот, который делает

<input type='number' [(ngModel)]='service.data.2'/>

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

Есть один компонент, который немного сложнее и имеет 2 дочерних элементов, он передает ngModel одному дочернему элементу, и этот дочерний элемент передает некоторые другие данные своему брату. Так что похоже

parent -> child -> grandchild
                       |
                       V
                sibling grandchild

Последний, более сложный, особенно не работает должным образом, щелчок по странице обновляет информацию о ребенке и внуке, но не о внуке.

Как мне понять этот беспорядок?

0 ответов

Я столкнулся с подобной проблемой, она связана с обнаружением изменений Angular. В моем случае у меня есть родительский компонент (приложение) с двумя вложенными компонентами, таблицей и фильтром. Когда пользователь вводит одно из полей фильтра, компонент выдает событие filterChange. Родительский компонент мог сразу видеть изменения в фильтре, но компонент таблицы не мог видеть эти изменения, пока не произошло какое-то событие (например, щелчок). Я решил этот вызов Detechanges ChangeDetectorRef внутри обработчика filterChange в родительском компоненте.

 update_filter($filter){
        this.requests_filter = $filter;
        this.cd.detectChanges();
      }
Другие вопросы по тегам