Щоб виконати трохи більше попередніх чудових відповідей, вам потрібно знати, що форми спостереження для виявлення та обробки змін змін. Це щось дійсно важливе і потужне. І Марк, і 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 (набагато більш потужний спосіб ;-)).
Сподіваюся, це допоможе вам, Тьєррі