html - Angular 8:管道过滤器不适用于反应式表单值更新?
问题描述
为什么角管道在更新表单后不过滤反应表单值?
在这里我有这个filterfunction
来转换值,我使用了自定义管道并将过滤器添加到它。但是为了举个例子,我已经在 ts 文件中编写了该函数。
在将一些新值更新到表单后,自定义管道(过滤器函数)不会转换值,我们该怎么做呢?
fg: FormGroup;
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.fg = this.fb.group({
name1: 1.3,
name2: 33.34,
name3: 3.5
});
}
reload() {
this.fg.patchValue({
name1: 10.9999999,
name2: 20.22222,
name3: 30
});
}
filtervalue(value) {
const formatter = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
minimumFractionDigits: 2
});
return formatter.format(value);
}
html
<form [formGroup]="fg">
<input formControlName="name1" [value]="filtervalue(fg.get('name1').value)">
<input formControlName="name2" [value]="filtervalue(fg.get('name2').value)">
<input formControlName="name3" [value]="filtervalue(fg.get('name3').value)">
</form>
<input type="button" value="reload" (click)="reload()">
{{fg?.value |json}}
这是第一次的输出:
1.30 美元
33.34 美元
3.50 美元
但是当我修补新值以形成时,它不会显示转换的值,它只显示修补的值
10.999999
20.22222
30
我想像货币管道一样在更新后转换值。
主要问题是当我们更新表单时货币管道不起作用。那么我该如何解决这个问题呢?
解决方案
推荐阅读
- c++ - arm的交叉编译协议缓冲区
- powershell - 如何仅编辑多个用户的名字(givenName)并使用 csv 导入
- math - 确保最大绝对值但保留符号的最佳方法是什么?
- c# - 在 .net Core 中使用 HttpClient 下载分块编码文件
- serenity-bdd - ExtentReports/Klov 和 Serenity
- c++ - iterator 或 reverse_iterator 的一个变量?
- azure - 在单个应用服务环境后端池中具有多个应用的 Azure 应用网关
- python-3.x - 无法将变量添加到 List 的实例
- python - 金字塔和statsmodels fit()和ARIMA()之间的区别?
- javascript - 在 h3 标签内复制文本时,复制到剪贴板不是一个功能