Angular 2-6中带有子组件的双向数据绑定和更改检测

时间:2018-08-13 20:25:33

标签: angular

我有一个正在使用的父组件。看起来像这样:

export class AttributeComponent implements OnInit, OnChanges {
  @Input() attribute: CharacterAttribute;
  @Output() attributeChange = new EventEmitter<CharacterAttribute>();

  ngOnChanges(changes: SimpleChanges): void {
    this.attributeChange.emit(this.attribute);
  }
}

我对这段代码的目标是将对输入模型的任何更改发送回父级。在父级中,我使用以下代码创建实例:

<app-attribute [(attribute)]="character.str"></app-attribute>

在组件内部,对于模型的每个属性,我都有以下代码:

<label>Base <input type="text" pInputText [(ngModel)]="attribute.base"></label>

但是,ngOnChanges永远不会触发,绑定只是一种方法。我该如何进行双向绑定?

1 个答案:

答案 0 :(得分:1)

NgOnChanges在所有其他挂钩之前触发,前提是您的 @Inputs()已正确设置,并且您已在父组件中的组件DOM上附加了正确的属性

建立单独的输入/输出流或使用主题或传递整个对象(由于传递了引用,因此您可以在两端自由地修改其属性)。