Angular 4属性无故更新

标签 angular

我想在 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/

相关文章:

angular - routerLink 附加我的链接

Angular 4 - 没有将 "exportAs"设置为 "ngForm"的指令

javascript - 日期验证(日期不应在现有日期范围内)

angular - Angular CLI 可以在新组件中自动包含 moduleId 吗?

angular - rxjs 限制 this.durationSelector 不是函数

返回旧步骤时,Angular Material Stepper 会导致 mat-form 字段验证动态表单

javascript - Angular:将属性传递给动态组件模板

angular - 类型字面量属性在 TypeScript 中不能有初始值设定项

css - 如何移动矩形并将坐标作为全局来裁剪所选图像

javascript - 根据 Angular 4 中的某些条件,在子级中单击按钮时,从父级中的数组中删除特定的组件实例