Angular表单初始化时如何限制valueChanges事件触发?
解决FormBuilder初始化默认值触发valueChanges的问题
当用FormBuilder创建表单并设置默认值时,直接在字段数组里写默认值会触发valueChanges事件。你可以拆成两步操作来避免这个问题:
- 第一步:先创建不带默认值的表单结构
- 第二步:用
patchValue或setValue配合{emitEvent: false}参数设置默认值
代码示例:
首先创建空表单:
this.myForm = this.fb.group({ fieldA: ['', []], fieldB: ['', []] });
然后设置默认值,同时禁止触发事件:
// 使用patchValue(支持部分字段赋值) this.myForm.patchValue({ fieldA: 'default Value For A', fieldB: 'default Value For B' }, { emitEvent: false }); // 或者使用setValue(要求赋值所有字段,更严格) this.myForm.setValue({ fieldA: 'default Value For A', fieldB: 'default Value For B' }, { emitEvent: false });
如果是从后端获取数据后重新加载表单,同样用这个方式赋值,就能避免每次加载时触发valueChanges回调。
内容的提问来源于stack exchange,提问作者Student18
相关产品推荐
相关产品推荐

