angular - 补丁值不适用于嵌套输入反应形式Angular 5
问题描述
我正在使用 Angular 5 和响应式表单,mi 表单是使用后端提供的 JSON 动态创建的,有一些特殊的输入嵌套了 3 个级别,并且它与单选按钮配合得很好,但是当输入是一组嵌套复选框,补丁值不改变复选框的值,这是 mi 结构的一个示例
this.cvForm = this._fb.group({
name: ['', [Validators.required]],
lastname: ['', [Validators.required]],
nested: this._fb.group({
level1: this._fb.group({
level2: this._fb.group({
level3: this._fb.group({
checkbox: [false, Validators.required]
})
})
}),
}),
});
}
this.cvForm
.get([
'nested',
this.nested,
'level1',
this.level1,
'level2',
this.level2,
'level3',
this.level3,
'components',
checkbox
]).patchValue({ checked: setValue });
编辑:
我一直在用你们提供的例子做很多测试,我感谢你们的帮助。但是我看到补丁值它没有保存o在第一次单击时更改值,当我在视图更改后单击复选框但表单中的值仍然为false并且第二次单击复选框将表单中的值设置为true ,但是视图发生了变化,基本上补丁值和设置值正在设置值,直到第二次单击表单。我不知道为什么会这样。
解决方案
经过几个小时的研究和测试,我发现 Angular 中的反应形式不支持object.property
设置深度级别值的语法,而是我这样做了:
this.cvForm.controls['nested'].controls['level1'].controls['level2'].controls['level3'].controls['checkbox'].value['checked'] = newValue;
这解决了我的问题,谢谢大家的帮助。
推荐阅读
- r - R 中的机器学习 - 集成的混淆矩阵
- windows - 根据列表重命名文件
- ansible - Ansible:如何检查一个变量是否正在加载到剧本中?
- jquery - 带有 bodyScrollLock 的 Sidr 将页面滚动到顶部
- delphi - Delphi:反序列化 TList
使用 TJson.JsonToObject - excel - Excel - COUNTIFS 比较日期不返回任何值
- sonos - Sonos - 如何通过我的 iOS 应用在 Sonos 设备上播放 Spotify/AppleMusic 曲目?
- python - 使用 Python 和 Dask 计算欧几里得距离
- google-apps-script - 如何通过 API 访问特定视图或属性的 Google Analytics 过滤器
- ios - 在 WKWebview 中修改请求标头