BehaviorSubject中元素的异步更改

时间:2018-05-31 10:54:18

标签: angular rxjs

我遇到了一个问题。我使用服务存储数组,在我做的父组件中对于数组我传递给数组元素的子组件,数组BehaviorSubject,两个组件都有Onpush策略,从子组件内部,调用方法正在通过服务更改数组元素。 因此,如果一次进行更改,则会在子组件中绘制更改,如果有延迟,则为no。

我该如何解决问题?

stackbiz:https://stackblitz.com/edit/angular-vywwsb

1 个答案:

答案 0 :(得分:0)

以下是解决方案Stackblitz

我认为问题与涉及immutable.js和角度变化检测的不变性的一些错误有关。我应用的修复只是通过创建并返回新对象的函数传递来自流的数据,以便可以触发ngChangeDetection。

*在以下代码中,sinppet数据 BehaviorSubjec t immutable.js List BehaviorSubject(List(array_of_objects));



// OLD
<ng-container *ngFor="let item of (data |async );
                trackBy: trackByFn;
                let first = first">
            {{item['list'].send}}
            <app-item [item]="item" [first]="first"></app-item>
</ng-container>

//FIX
<ng-container *ngFor="let item of (data |async );
                trackBy: trackByFn;
                let first = first">
            {{item['list'].send}}
            <app-item [item]="func(item)" [first]="first"></app-item>
</ng-container>

//WHERE func

func(obj){
return ({...obj})
}
&#13;
&#13;
&#13;