使ngModel识别值的更改,尽管它在管道

时间:2018-05-25 15:12:13

标签: angular typescript

目前我有一个组件,其中包含一个输入字段,通过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。所以我的问题是:我应该在哪里解开值,以便它仍然触发更改检测并格式化数字,但不会抛出错误。

0 个答案:

没有答案