Bind auf globale Ereignisse ist mit Host-Bindung (dies in der API-Dokumentation erwähnt wird, deep inside the DirectiveMetadata page):
@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
Ihre ursprüngliche Code tut nicht funktionieren, weil Sie den onresize
Handler (der Angular hatte ursprünglich monkey-patched) zu Ihrer eigenen Funktion gepatcht. Angular hat also keine Möglichkeit, die Änderungserkennung nach Abschluss des Ereignishandlers auszuführen. Durch die Verwendung der Host-Bindung bleibt das Angular Monkey-Patch an Ort und Stelle. Daher wird die Änderungserkennung nicht deaktiviert. Daher wird Ihre Ansicht aktualisiert, nachdem das Resize-Ereignis ausgelöst wurde.
Hi ... Das ist eine Zeile Code, wo ich Haltepunkt setzen. das ist kein tatsächlicher Wert. Ändern Sie den ui-Wert, ohne die lokale Variable zu ändern. Bitte leiten Sie mich weiter. –