我有一个formgroup,它有一个formcontrol。我已经订阅了formgroup和formcontrol的valuechanges事件。点击按钮我想禁用并重置formcontrol的值而不激活valuechanges所以我使用了emitEvent:false
,它不会触发formcontrol的值更改但是值更改了formgroup被解雇。我在这里有一个样本plunker演示https://plnkr.co/edit/cN2wROc7o16w52ZEPZgH?p=preview。这是预期的行为或问题。可以有人指导我
ResetAndDisable(){
this.ParentGroup.controls['test'].reset(null,{emitEvent:false});
this.ParentGroup.controls['test'].disable({emitEvent:false});
}
Enable(){
this.ParentGroup.controls['test'].enable({emitEvent:false});
}
答案 0 :(得分:5)
您可以使用emitEvent:false
和onlySelf:true
的组合,其中 onlySelf:true
......
如果
onlySelf
为真,则此更改将仅影响此FormControl的验证,而不影响其父组件。默认为false
。
那么你可以做的是:
ResetAndDisable(){
this.ParentGroup.controls['test'].reset(null,{onlySelf:true, emitEvent:false});
this.ParentGroup.controls['test'].disable({onlySelf:true, emitEvent:false});
}
Enable(){
this.ParentGroup.controls['test'].enable({onlySelf:true, emitEvent:false});
}