Ответ 1
Есть ли способ удалить только поле ввода, которое я вводил, поскольку все остальные компоненты не могут изменить
Да, для компонентов, которые не будут меняться, установите стратегию обнаружения изменений для этих компонентов на OnPush
. Компонент OnPush
будет проверяться только на изменения, если
- любое из его свойств ввода изменяется
- он запускает событие (например, нажатие кнопки)
- наблюдаемый (который является свойством ввода или свойством local-to-component) запускает событие, а
| async
используется в шаблоне с наблюдаемым (см. плункер в комментариях ниже этого ответа)
import {Component, Input, ChangeDetectionStrategy} from 'angular2/core';
@Component({
...
changeDetection: ChangeDetectionStrategy.OnPush
})
Также рассмотрите возможность прослушивания изменений на вашем входе, подписавшись на valueChanges
Observable Angular, который доступен в вашем элементе формы, если вы используете ngFormControl. Затем вы можете использовать debounce()
для обработки изменений только каждую секунду или любого подходящего временного интервала:
<input type=text [ngFormControl]="input1Control">
constructor() {
this.input1Control = new Control();
}
ngOnInit() {
this.input1Control.valueChanges
.debounceTime(1000)
.subscribe(newValue => console.log(newValue))
}
См. fooobar.com/questions/39896/... для рабочего плунжера.