我想在 ngOnInit()
期间仅设置一次 this.viewSegmentsForAnalysis = this.segmentsForAnalysis;
。但是,当我调用此方法 addSegmentsForAnalysis()
时,它会将 this.viewSegmentsForAnalysis
的值更新为 this.segmentsForAnalysis
。什么可能导致它更新?
ngOnInit() {
this.segmentsForAnalysis = this.submissionDetails.segmentations.filter((segment) => {
return segment.columns.length === 1;
});
this.viewSegmentsForAnalysis = this.segmentsForAnalysis;
}
addSegmentsForAnalysis() {
this.segmentsForAnalysis.push({
name: this.fileColumn.value,
overlapAnalysis: false,
columns: [{
index: segmentIndex,
name: this.segmentTitle.value
}]
});
}
最佳答案
您可以使用 .slice()
方法让您引用的数组对象拥有一组新值。它将基于您的数组 segmentsForAnalysis
并将创建一组新的数组。因此,除非您再次调用 ngOnInit
,否则它不会更新。
除非您再次创建组件,否则不会发生这种情况。
所以使用这个:
ngOnInit(){
.......
this.viewSegmentsForAnalysis = this.segmentsForAnalysis.slice();
// add .slice here -------------------------------^^^^^^^^
}
关于Angular 4属性无故更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47904840/