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