Динамически созданный компонент не привязан к модели при смене модели - PullRequest
2 голосов
/ 16 мая 2019

Моя цель - передать новое значение свойству item динамически создаваемого компонента, восстановить состояние компонента в состояние по умолчанию, которое хранится в объекте.Но очевидно, что компонент не отслеживает изменения модели.

Я пытался запускать обнаружение изменений в компоненте каждый раз, когда выдается новое значение.Но все еще не собирая значение.

Я воспроизвел проблему здесь в https://stackblitz.com/edit/angular-tyhfku.

В приведенном выше коде HelloComponent является компонентом многократного использования, а HeroComponent является динамическим компонентом, который содержит HelloComponent (извинитедля именования).В AppComponent у меня есть метод onclick, который выдает новое значение при каждом клике.Также вы можете изменить состояние каждого элемента в DOM.Но я бы хотел, чтобы при каждом новом значении восстанавливалось состояние HeroComponent, которого я пытаюсь достичь при подписке, но не работаю

1 Ответ

0 голосов
/ 17 мая 2019

Речь идет не о динамически создаваемых компонентах - попробуйте изменить это стандартным способом, и у вас все еще будет та же проблема.Речь идет о том, как передать простые значения компоненту section / hello, как их изменить и как работает механизм обнаружения изменений в Angular.После того, как вы измените значения в SectionComponent, в HeroComponent ничего не изменилось, поэтому входные значения для SectionComponent совпадают.Попробуйте добавить еще одно простое числовое свойство Input в SectionComponent, измените его в HeroComponent, и вы увидите, что onChanges работает нормально: https://stackblitz.com/edit/angular-za4mkd

Сейчас я не понимаю, чего вы хотите достичь, поэтому я не могу сказать вам правильный способзакодируйте это, но, возможно, вам следует рассмотреть возможность использования Control Value Accessor (если это должен быть какой-то флажок в форме?).Также следует помнить, что для объектов (например, структур данных) Angular видит изменения только в случае изменения ссылки (вы можете использовать оператор распространения для создания нового экземпляра структур данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...