【发布时间】:2018-09-06 10:22:52
【问题描述】:
我试图弄清楚如何在反应形式中使用管道,以便将输入强制转换为货币格式。我已经为此创建了自己的管道,我已经在代码的其他区域进行了测试,所以我知道它可以作为一个简单的管道工作。我的管道名称是“udpCurrency”
我能找到的关于堆栈溢出的最接近的答案是这个:Using Pipes within ngModel on INPUT Elements in Angular2-View 但是这在我的情况下不起作用,我怀疑这与我的表单是反应性的事实有关
以下是所有相关代码:
模板
<form [formGroup]="myForm" #f="ngForm">
<input class="form-control col-md-6"
formControlName="amount"
[ngModel]="f.value.amount | udpCurrency"
(ngModelChange)="f.value.amount=$event"
placeholder="Amount">
</form>
组件
import { Component, OnInit, HostListener } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
export class MyComponent implements OnInit {
myForm: FormGroup;
constructor(
private builder: FormBuilder
) {
this.myForm = builder.group({
amount: ['', Validators.required]
});
}
}
错误:
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined: '. Current value: 'undefined: undefined'
【问题讨论】:
-
表达式错误是来自管道还是组件?
-
组件 html。特别是具有此 "[ngModel]="f1.value.amount | 的行udpCurrency"
标签: angular angular-reactive-forms angular-pipe