Angular:检测嵌套对象

时间:2017-12-03 16:33:29

标签: angular ionic3

我一直在这里和其他地方寻找解决方案几个小时,我简直不敢相信我找不到一个。所以无论如何。我有一个简单的Angular组件(在Ionic 3中使用它):

class Item {
  name = 'New item';
}

@Component({
  selector: 'edit-item',
  template: `<input [(ngModel)]='newItem.name' /><button (click)='save()'>Save</button>`
})
export class EditItem {

  newItem = new Item();

  constructor(private cd: ChangeDetectorRef) {
  }

  save() {
    this.newItem = new Item();
  }

}

当我在输入字段中输入文本时,它会正确更改item.name。现在,当我单击“保存”时,输入字段将继续显示我输入的文本。当我创建一个新项目时,我宁愿让它显示“新项目”。

我知道角度变化检测不会深度比较对象。所以我试图将save函数更改为:

save() {
    this.cd.detectChanges();
}

我还尝试将组件的changeDetection更改为ChangeDetectionStrategy.OnPush,并在项目名称发生更改时实施自定义ngOnChanges以解除cd.markForChanges()

我对这些方法都没有成功。你能帮我找到解决这个问题的正确方法吗?

0 个答案:

没有答案