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

问题描述 投票:0回答:1

我创建了 Angular 7 应用程序,它使用一个非常大的外部库。除了来自外部来源的事件之外,我已将所有事情都成功连接起来。

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

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

效果很好。

该函数然后使用BehaviorSubject并发出数据

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

这也很好用。

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

但是,在我的模板中,我无法使用异步管道,因为它无法检测到更改。我必须

ChangeDetectorRef
并更新变量,然后调用 detectorChanges。

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

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

angular rxjs
1个回答
4
投票

也许您应该注入 ngZone 并将调用包装到其

run
方法中。

import { NgZone } from '@angular/core';

constructor(
   private ngZone: NgZone
  ) {}

this.ngZone.run(() => this.externalMonitorService.newData(external.data));
© www.soinside.com 2019 - 2024. All rights reserved.