angular - Angular Reactive Form - 选项下拉菜单
问题描述
有没有办法使用响应式方法显示来自 Observable 的表单值?对于这个示例,我有一个包含硬编码数据的表单,它在 HTML 中显示了我的标签列表,但我面临两个问题,希望有人能发现我没有看到/理解的问题。
- 使用 this.labels$[0].label 作为字段的初始表单值时,出现 TypeError: Cannot read property 'label' of undefined。我希望它会从我的标签 $() 列表中提取第一个标签。
- 如果我将上面的内容更改为字符串,例如“测试”,下拉菜单会呈现,我会得到以下内容
{"labels": "Test", "field1": "Some value", "field2": "Some value" }
但是当我更改下拉菜单时,它会完全删除标签值。
{"field1": "Some value", "field2": "Some value" }
TS
get labels$() {
return [
{ "label": "label-1" }, // e.g. Mr.
{ "label": "label-2" },
{ "label": "label-3" },
{ "label": "label-4" }
];
}
HTML
<rx-select formControlName="labels" [options]="labels$ | async" [label]="Label"></rx-select>
组件.ts
return new FormGroup({
labels: new FormControl('', [Validators.required]),
field1: new FormControl('', [Validators.required]),
field2: new FormControl('', [Validators.required]),
});
形式
理想的表单值如下,我可以看到这些值随着我的交互而变化。
{"labels": "label-1", "field1": "Some value", "field2": "Some value" }
当我浏览反应式表单体验时,任何建议表示赞赏;)
解决方案
如果您只想查看 FormGroup 的值,则可以通过 2 种方式进行:
- 使用管道打印HTML中 FormGroup 实例的值
async
。json
需要管道将对象格式化为文本。
在 HTML 文件中:
formGroupInstance.valueChanges | async | json
- 在控制台中打印 FormGroup 实例的值,方法是订阅
valueChanges
.
在 TypeScript 文件中:
formGroupInstance.valueChanges.subscribe(value => console.log(value));
你可以在这里找到一个例子| stackblitz.com
推荐阅读
- email - 我正在接收我在 laravel 5.7 的输入框中输入的邮件 ID 的邮件
- elasticsearch - “_cat/recovery”中没有提到恢复
- javascript - 本地化和全球化文件翻译工具客户端 - javascript
- html - 如何在 React Js 中使用 Web 组件?
- mysql - WP Bakery Page Builder 角色管理器不保存禁用经典编辑器
- wordpress - 如何显示用户配置文件中的 ACF 字段内容
- marklogic - {MARKLOGIC}如何测试特定角色的文档查看功能,而不是同一文档的管理员角色?
- ios - 如何绑定在objc中更改的枚举变量?
- java - 如果使用java的属性具有相同的值,如何将++1附加到Pojo列表中的属性值
- api - 如何获取喜欢推文的用户列表?