我正在使用angular4,ngrx / store和PeerJS 我有一个代码服务来处理连接打开事件和从其他同行接收数据。数据连接部分和p2p工作。
let conn = peer.connect(remoteId, {reliable: true});
conn.on('data', (data) => {
this.store.dispatch(addBlock(data )); //this working !
});
在app组件我订阅了商店
this.block$ = this.store.select("blockchain") as Observable<Block[]>;
this.blocks$.subscribe((blockchain:Block[]) => {
this.lastblock = blockchain[blockchain.length - 1];
console.log(this.lastblock); // this working !
});
在app模板上,一个简单的绑定块$
<div>{{ blocks$ | async }}</div>
问题是dom没有更新,它只会更新其他操作是否会触发更改检测,例如,焦点输出,setInterval等...所以我认为根本问题是商店在角度区域中无法识别的事件内更新。
解决问题的正确方法是什么?
我已尝试将changeDetection引用服务并调用“this.ref.detectChanges()”,但该服务中没有提供程序。
我试图包围“this.store.dispatch(addBlock(data));”使用setTimeout,无法正常工作。
我使用默认的ChangeDetectionStrategy