Angular 2/4: Реактивные формы синхронны, а формы на основе шаблонов - асинхронны. Как?

Я просматривал документ angular.io (Реактивные формы синхронны ), пытаясь понять реактивные формы (как они синхронны, а формы, управляемые шаблонами, являются асинхронными).

Но в документе недостаточно объяснений с примерами. Может ли кто-нибудь помочь мне понять, как формы, управляемые шаблонами, являются асинхронными, а реактивные формы - синхронными?

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

Любая помощь приветствуется.


person shreyansh    schedule 05.04.2018    source источник
comment
проверьте мой ответ. Я добавил ссылку   -  person Suvethan Nantha    schedule 05.04.2018
comment
Обновил мой ответ, надеюсь, что это поможет вам понять, в основном директива, которую вы пишете в шаблоне, на основе которого имеет значение   -  person Pranay Rana    schedule 05.04.2018


Ответы (1)


Внимательно прочтите эту строку в той же документации:

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

Формы на основе шаблонов являются асинхронными (поскольку делегируют задачу создания элемента управления) Формы, управляемые шаблонами, делегируют создание своих элементов управления формой директивам. Чтобы избежать ошибок «изменено после проверки», этим директивам требуется более одного цикла для построения всего дерева управления. Это означает, что вы должны подождать паузу, прежде чем манипулировать какими-либо элементами управления из класса компонента.


В шаблоне, управляемом вами, напишите [NgModel] или [NgForm] (директивы), которые возьмут на себя задачу создания вашего элемента управления на веб-странице в html, таким образом он становится асинхронным.

Если вы прикрепили крючок ngAfterViewInit lifecycle hook, вы легко найдете разницу между ними,

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

person Pranay Rana    schedule 05.04.2018
comment
Вы можете объяснить мне на примере - person shreyansh; 05.04.2018
comment
@shreyansh - в шаблоне, созданном вами, напишите [NgModel] или [NgForm], который возьмет на себя задачу создания вашего элемента управления на веб-странице в html, то есть как он становится асинхронным, - person Pranay Rana; 05.04.2018
comment
@shreyansh - если вы подключили крючок жизненного цикла ngAfterViewInit, вы легко найдете разницу между ними. В реактивных формах вы найдете контроль, где в шаблоне, управляемом вами, нет. - person Pranay Rana; 05.04.2018
comment
pranay - Спасибо за ваш ответ, но я хочу понять, что имеется в виду под строкой. Вы можете сразу обновить значение или развернуть потомков родительской формы, потому что все элементы управления всегда доступны и чтобы избежать изменений после проверенных ошибок, поэтому я попросили объяснить с помощью какого-либо примера или в Интернете есть блог (ссылка), который четко объясняет разницу. - person shreyansh; 06.04.2018
comment
@shreyansh - здесь: blog.angularindepth.com .com / - person Pranay Rana; 06.04.2018