使用ngrx / store手动触发Angular2更改检测

时间:2017-04-20 09:50:42

标签: angular ngrx

我正在使用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

0 个答案:

没有答案