如何替换Subject/EventEmitter中已废弃的observers属性?
重构废弃的
observers属性代码 你可以直接使用RxJS Subject(EventEmitter继承自Subject)提供的hasObservers()方法替代原有逻辑,这是官方为替换废弃的observers属性设计的API,专门用于判断当前是否存在活跃订阅者。
重构后的代码如下:
@Output() click: EventEmitter<any> = new EventEmitter<any>(); ngOnInit(): void { this.hasHandler = this.click.hasObservers(); }
补充说明
hasObservers()直接返回布尔值,存在至少一个订阅者时返回true,否则返回false,完全等价于你原来的this.click.observers?.length > 0判断逻辑。- 如果需要实时追踪订阅状态变化(而非仅在
ngOnInit时检查一次),可以在订阅/取消订阅的时机主动调用hasObservers()更新hasHandler,不过绝大多数场景下,直接使用hasObservers()就足够满足需求。
内容的提问来源于stack exchange,提问作者user21797103
相关产品推荐
相关产品推荐

