我创建了一个Observable用于监听resize主window对象的事件,它在我的组件中看起来像这样
export class MyComponent implements OnInit{
WindowListener$: Observable<event> = new fromEvent(window, 'resize');
ngOnInit(): void{
this.WindowListener$.subscribe(() => this.readWindowSize());
}
}
Run Code Online (Sandbox Code Playgroud)
该readWindowSize()方法所做的只是读取窗口的高度和宽度,并检查它们是否大于特定大小,然后分别将布尔值切换为true或false。
通常,当我订阅某些内容时,我会在挂钩中取消订阅它,ngOnDestroy但是当我这样做时
ngOnDestroy(): void {
this.WindowListener$.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)
我看到下面有红色的波浪线unsubscribe()。当我查看按 Observable 名称后弹出的列表中的可用方法时.,我没有看到unsubscribe()列表中存在任何方法。除非我弄错了,在 Angular 16 之前我已经这样做过好几次了,甚至已经养成了习惯。我需要通过其他方式关闭订阅吗?是否有一些更新现在可以自动执行,然后他们将其删除了?我不明白为什么我们可以在没有办法关闭订阅的情况下进行订阅。有人可以解释一下吗?
小智 5
unsubscribe()方法可用于 subscribe 方法返回的对象。于是修改了代码。
export class AppComponent implements OnInit {
WindowListener$: Observable<event> = new fromEvent(window, 'resize');
private _windowsSubscription:Subscription
ngOnInit(): void{
this._windowsSubscription = this.WindowListener$.subscribe(() => this.readWindowSize());
}
ngOnDestroy(): void {
this._windowsSubscription.unsubscribe();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |