angular - FormControl 显示值
问题描述
如何在输入 FormControl 中显示一些不等于此 FormControl 值的文本?
例如,从服务器获取一些对象 - {id: 1, name: "Name1"}
,并将value
FormControl 设置为该对象或 object.id 但display value
设置为 object.name - “Name1”。
为什么我需要它:
我使用角度材料自动完成,它将 FormControl 的值设置为对象(来自选定的 mat-option)并通过 displayWith 将值显示为字符串。我想在从服务器获取数据时重复这种行为以获得一些一致性和便利性
解决方案
我为我的问题做了一些研究。
需要使用FormControlDirective及其valueAccessor.writeValue()
设置输入的显示值(它使用渲染器)或作为替代nativeElement.value
。
和 FormControl 的setValue()
用于emitModelToViewChange = false
设置 FormControl 的值。
在模板中
<input [formControl]="ctrlF" #ctrlD="ngForm">
在控制器中
@ViewChild('ctrlD', {read: FormControlDirective})
ctrlD :FormControlDirective
...
this.ctrlD.valueAccessor.writeValue("display value")
this.ctrlD.control.setValue({foo: "foo", bar: "bar"}, {
emitModelToViewChange: false
})
推荐阅读
- visualization - 像 tableau 或 looker 这样的可视化工具是否应该用于多租户系统?
- leaflet - 传单全屏集群标记消失
- lxc - Ubuntu 容器无法启动
- r - 如何为 R 中的 SpatialPixelsDataFrame 类对象制作多图?
- javascript - 在自定义 htm5 音频播放器的进度条(搜索栏)末尾添加一个移动友好的“点抓取”
- angular - Angular 6:ng build --aot
- grafana - Grafana 多值浮点 histogram_quantile
- action - 提交谷歌助手应用程序时出错
- jekyll - 排除“幽灵”页面