Щоб виконати трохи більше попередніх чудових відповідей, вам потрібно знати, що форми спостереження для виявлення та обробки змін змін. Це щось дійсно важливе і потужне. І Марк, і dfsq описали цей аспект у своїх відповідях.
Спостереження дозволяють не тільки використовувати subscribeметод (щось подібне до thenметоду обіцянок у Angular 1). Ви можете піти далі, якщо потрібно, щоб впровадити деякі ланцюги обробки оновлених даних у формах.
Я маю на увазі, що ви можете вказати на цьому рівні час дебютування debounceTimeметодом. Це дозволяє зачекати протягом певного часу, перш ніж вносити зміни та правильно обробляти декілька входів:
this.form.valueChanges
.debounceTime(500)
.subscribe(data => console.log('form changes', data));
Ви також можете безпосередньо підключити обробку, яку ви хочете запустити (наприклад, асинхронну), коли значення оновлюються. Наприклад, якщо ви хочете обробити текстове значення для фільтра списку на основі запиту AJAX, ви можете скористатися switchMapметодом:
this.textValue.valueChanges
.debounceTime(500)
.switchMap(data => this.httpService.getListValues(data))
.subscribe(data => console.log('new list values', data));
Ви навіть підете далі, пов’язавши повернене спостережуване безпосередньо з властивістю вашого компонента:
this.list = this.textValue.valueChanges
.debounceTime(500)
.switchMap(data => this.httpService.getListValues(data))
.subscribe(data => console.log('new list values', data));
і відобразити його за допомогою asyncтруби:
<ul>
<li *ngFor="#elt of (list | async)">{{elt.name}}</li>
</ul>
Просто сказати, що вам потрібно продумати спосіб обробки форм по-різному в Angular2 (набагато більш потужний спосіб ;-)).
Сподіваюся, це допоможе вам, Тьєррі