角度绑定@HostBinding(窗口:调整大小)和Rxjs&39;FromEvent(窗口,#39;调整大小')之间的差异 [英] Difference Between Angular's @HostBinding( 'window:resize' ) And Rxjs' fromEvent( window, 'resize' )

查看:28
本文介绍了角度绑定@HostBinding(窗口:调整大小)和Rxjs&39;FromEvent(窗口,#39;调整大小')之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是想知道用其中一个代替另一个有什么好处。

@HostListener( 'window:resize' )
doSomething(): void {
    // ...throttle with setTimeout and clearTimeout maybe...
}

fromEvent( window, 'resize' ).pipe(
    // ... debounceTime, takeUntil etc.
).subscribe( () => {
    doSomething();
})

这真的只是一个上下文问题(例如,使用管道()可以更轻松地处理事件流),还是可观察到的更"现代",或者根本不重要?

谢谢!

推荐答案

fromEvent将为您提供更大的执行灵活性和管道衬砌,并且可以在NgZone上下文之外绑定。

@Hostlistener有一个优势,即您不必在激发事件后手动触发更改检测。当您的组件使用OnPush更改检测策略时,您确实需要使用Observables,这是建议的(但不是默认的)策略。使用fromEvent时还有其他需要执行此操作的情况,但这些都是非常边缘的情况。

HostListener的另一个优点是,组件销毁时不需要取消订阅,因为这是自动完成的。

因此,这主要取决于偏好和上下文。

ad 有第三方libraries(我的)扩展了HostListener和模板事件绑定内容,提供了去抖动和其他很酷的功能。

这篇关于角度绑定@HostBinding(窗口:调整大小)和Rxjs&39;FromEvent(窗口,#39;调整大小')之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆