来自 Angular 外部的更改检测和事件



我创建了一个使用非常大的外部库的 Angular 7 应用程序。我把所有的事情都与成功联系在一起,除了来自外部来源的事件。

我在外部源上有一个事件侦听器,它可以触发并将数据发送到我的 Angular 应用程序。

externalApp.event((data)=>{
this.externalMonitorService.newData(external.data)
});

这工作正常。

然后,此函数使用 BehaviorSubject 并发出数据

newData(data){
this.mySubject.next(data);
}

这也很好用。

我可以在任何组件中订阅它,并且我得到了更改,它工作正常。

但是,在我的模板中,我无法使用异步管道,因为它无法检测到更改。我必须ChangeDetectorRef并更新一个变量,然后调用 detectChanges。

我不想担心这个订阅,必须在每个组件中实现这个逻辑,这是非常嗯......反应性断裂

我是否在 Angular 中错过了一些我不知道的东西?有没有办法在 Angular 中,也许是 NgZone,我可以调用让 Angular 知道的东西,这些数据来自外部来源,将此视为更改,因此我不必在任何地方实现此逻辑。

也许你应该注入 ngZone 并将调用包装到它的run方法中。

this.ngZone.run(() => this.externalMonitorService.newData(external.data));

最新更新