此问题是由于 resize
事件只在根元素上触发,因此您需要确保您订阅 resize
事件的元素是 window
对象,而不是文档的根元素。
以下是一个示例,阐述如何使用 Observable
和 HostListener
来订阅 resize
事件:
import { Component, HostListener } from '@angular/core';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'my-component',
template: 'My Component'
})
export class MyComponent {
resizeObservable$: Observable;
constructor() {
this.resizeObservable$ = Observable.fromEvent(window, 'resize');
this.resizeObservable$.subscribe(evt => console.log(evt));
}
@HostListener('window:resize', ['$event'])
onResize(event) {
this.resizeObservable$.subscribe(evt => console.log(evt));
}
}
在此示例中,我们使用 Observable
订阅 resize
事件,并在订阅到的时候输出事件对象到控制台中。
我们还使用 HostListener
装饰器订阅 window
对象上的 resize
事件,并在回调函数中订阅 resizeObservable
可观察对象。
这样,无论是直接订阅还是使用 HostListener
装饰器订阅 resize
事件,都可以正确触发 Observable
。