我将一个值传递给子组件,如此...
<app-child-component[prop1]='prop1'></app-child-component>
并像孩子一样抓住它。
@Input() prop1:boolean;
这是一个布尔值,当按下按钮时,它在父级中从false变为true。在孩子中,当单击另一个按钮时,它会变回false。
此时,如果我再次按下父母按钮,则没有任何反应。 prop1的值在父级中仍然为true,因此未检测到任何更改,并且未向子级发送任何内容。我理解这是预期的行为。
有没有办法仍然强制将prop1的值再次推给孩子?
编辑:在这种情况下我可能需要双向数据绑定,但由于我实际上并没有在父级中使用prop1的值,因此在子级中再次更新它的能力就足够了。
答案 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函数中所做的。
编辑:用例是一个模态对话框,模态位于子组件中。父有按钮打开模态,模态有一个关闭按钮。