ホスト バインディングを使用してグローバル イベントにバインドします (これは、DirectiveMetadata ページの奥深くにある API ドキュメントに記載されています)。
@Component({
selector: 'my-app',
template: `<p>Resize window and look at console log.
<p>{{a}} {{b}}`
})
export class AppComponent {
@HostListener('window:resize') onResize() {
this.a++;
this.b++;
console.log(this.a, this.b, event)
}
}
plunker
onresize
独自の関数に (Angular が最初にモンキー パッチを適用した) ハンドラーにモンキー パッチを適用したため、元のコードは機能しません。そのため、Angular には、イベント ハンドラーの終了後に変更検出を実行する方法がなくなりました。ホスト バインディングを使用すると、Angular のモンキー パッチが保持されるため、変更検出が無効になりません。そのため、サイズ変更イベントが発生した後にビューが更新されます。