Чтобы завершить чуть больше предыдущих хороших ответов, вы должны знать, что формы используют наблюдаемые для обнаружения и обработки изменений значений. Это что-то действительно важное и мощное. И Марк, и 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 по-другому (гораздо более мощный способ ;-)).
Надеюсь, это поможет тебе, Тьерри