即使在父角2+中保持不变,也会更新子项中的输入值

时间:2018-02-02 15:58:57

标签: angular

我将一个值传递给子组件,如此...

<app-child-component[prop1]='prop1'></app-child-component>

并像孩子一样抓住它。

 @Input() prop1:boolean;

这是一个布尔值,当按下按钮时,它在父级中从false变为true。在孩子中,当单击另一个按钮时,它会变回false。

此时,如果我再次按下父母按钮,则没有任何反应。 prop1的值在父级中仍然为true,因此未检测到任何更改,并且未向子级发送任何内容。我理解这是预期的行为。

有没有办法仍然强制将prop1的值再次推给孩子?

编辑:在这种情况下我可能需要双向数据绑定,但由于我实际上并没有在父级中使用prop1的值,因此在子级中再次更新它的能力就足够了。

2 个答案:

答案 0 :(得分:1)

你必须从chld向父级发出值,所以是2路绑定

在孩子身上

  @Output() booleanEmitter= new EventEmitter();

onButtonClick(){
    this.booleanEmitter.emit(this.prop1);
}
在父母

<app-child-component (booleanEmitter)="getProp($event)"  [prop1]='prop1'></app-child-component>

getProp($event){
this.prop = $event as boolean
}

答案 1 :(得分:1)

好的找到了没有双向数据绑定的方法..

在父母......

<button type="button" (click)="prop1=!prop1">...</button>
<app-child-component [setProp]='prop1'></app-child-component>

在孩子身上..

prop1:boolean;
  @Input()
  set setProp(p: boolean) {
    this.prop1 = true;
}

因此,每次单击父级中的按钮时,值都会更改,并且每次都会发送给孩子。因为在父级中单击按钮总是意味着该值必须在子级中为真,这就是我在set函数中所做的。

编辑:用例是一个模态对话框,模态位于子组件中。父有按钮打开模态,模态有一个关闭按钮。