目前我有一个组件,其中包含一个输入字段,通过ng模型绑定到一个数字,如下所示:
<input [ngModel]="number | percent:‘1.2’ | wrapPipe" (ngModelChange)="modify($event)"/>
此外,号码通过@Input标记传入。
@Input() number: number;
百分比管道删除任何不必要的精度,使得像1.44444这样的数字将变为1.44并添加%符号。 换行管道只是在格式化的数字上调用WrappedValue.wrap,如下所示:
transform(value: any, …args: any[]): any {
return WrappedValue.wrap(value);
}
此管道的要点是确保即使格式化的数字没有改变也会触发ng更改。因此,例如,如果数字的值从1.444变为1.4444,我仍然希望它将其转换为1.44并通过百分比管道添加%。这大部分都有效,除了我收到以下错误:
ExpressionChangedAfterItHasBeenCheckedError:表达式已更改 检查后。上一个值:'model:[object Object]'。 当前值:'model:null'。
如果字段中没有任何内容或格式化的数字,则模型的当前值为null。所以我的问题是:我应该在哪里解开值,以便它仍然触发更改检测并格式化数字,但不会抛出错误。