如果您直接在组件模板中使用数组,则可以使用不纯管道。(此示例适用于不需要深度检查的简单数组)
@Pipe({
name: 'arrayChangeDetector',
pure: false
})
export class ArrayChangeDetectorPipe implements PipeTransform {
private differ: IterableDiffer<any>;
constructor(iDiff: IterableDiffers) {
this.differ = iDiff.find([]).create();
}
transform(value: any[]): any[] {
if (this.differ.diff(value)) {
return [...value];
}
return value;
}
}
<cmp [items]="arrayInput | arrayChangeDetector"></cmp>
对于那些我们当中仍然遇到阵列问题的旅行者,这里是对问题的再现以及几种可能的解决方案。
https://stackblitz.com/edit/array-value-changes-not-detected-ang-8
解决方案包括: