angular - Angular - patchValue FormControl
问题描述
我有我在方法 saveConvention 中调用的 formGroup 波纹管,我想获取组合同并在 createConvention 服务中编辑 formControl conventionId,我尝试使用下面提到的方法但是当我尝试显示时,conventionId 始终为空
this.conventionForm = this.fb.group({
shortname: fb.control(null, Validators.required),
fullname: fb.control(null, Validators.required),
contract: this.fb.group({
conventionId: fb.control(null),
signatureProvides: fb.control(null, Validators.required)
})
});
public saveConvention(data: FormGroup): void {
let currentData: FormGroup = data;
let formControlContract: AbstractControl = currentData.get('contract');
data.removeControl('contract');
this.conventionService.createConvention(data.value)
.catch(err => {})
.subscribe(res => formControlContract.patchValue({ conventionId: res.id }) );
console.log(formControlContract.value);
this.contractBenefitPartnerService.createContract(formControlContract.value)
.catch(err => {}).subscribe(res => {});
}
解决方案
使用 patchValue 后需要使用updateValueAndValidity
才能生效。
this.conventionService.createConvention(data.value)
.catch(err => {})
.subscribe(res => {
formControlContract.patchValue({ conventionId: res.id })
formControlContract.updateValueAndValidity();
}
);
推荐阅读
- javascript - 拒绝承诺时如何将状态码设置为 404
- javascript - 检查下一项是否长 1 个单位(Javascript)
- python - 获取脚本的名称以自动传递给模块函数
- kotlin - Ktor 与 Kmongo 和 kotlinx.serialization
- c# - Moq 不断抛出空引用异常
- python - Asyncio 模块无法创建任务
- postgresql - 在 Postgrsql 中创建转储、备份
- react-native - 无法加载脚本。确保您正在运行 Metro 服务器或您的捆绑包“index.android.bundle”已正确打包以供发布
- c++ - 为什么当我传入最大 32 位值时,我的位集存储最大 64 位值而不是最大 32 位值?
- dart - Dart 中的操作 % 返回一个奇怪的值 % 在 Dart 中工作