私は単純なコンポーネントがあります。アンギュラ4 - HTML入力要素変更イベントは、OnPush戦略@Input()セッターをトリガー
<div *ngFor="let item of _items">
{{item}}
</div>
<input type='text' (change)='onChangeValue($event)'>
質問:
@Component({
// ...
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent {
private _items: string[];
@Input()
set items(items) {
console.log('setter of items: ', items); // verify call
this._items = items;
}
onChangeValue(event) {
console.log('on change value', event);
}
}
それはテンプレートですが。
なぜテキストが変更された後にセッター@Input() set items(..)
が呼び出されているのですか? input
要素とonChangeValue
関数が呼び出されます。
Angularの変更検出戦略OnPush
は、@Input() set items(..)
ファンクションif and only if
をトリガーすると考えました。親コンポーネントは、このコンポーネントにアイテムの新しい参照を渡します。
ただし、@Input() set items(..)
は、入力テキストが変更されたときにトリガーされます。
なぜですか??
入力にバインディングがありますか? –
実際に働いています。 – Dachstein
http://stackblitz.comでの再生が役立ちます。 –