Angular 无法分析指定的值,或者在使用数字管道时超出范围
无法分析指定的值,或该值超出范围 当我得到我的对象时,我用管道格式化了一个数字,但它返回了这个警告,并且没有显示该值。如果将其删除,则会显示它 这不会显示该值Angular 无法分析指定的值,或者在使用数字管道时超出范围,angular,angular-pipe,Angular,Angular Pipe,无法分析指定的值,或该值超出范围 当我得到我的对象时,我用管道格式化了一个数字,但它返回了这个警告,并且没有显示该值。如果将其删除,则会显示它 这不会显示该值 <input name="value" [ngModel]="value | number : '1.2-2'"/> <input name="value" [ngModel]="value"/> 值是一个数字,我可以在控制
<input name="value" [ngModel]="value | number : '1.2-2'"/>
<input name="value" [ngModel]="value"/>
值是一个数字,我可以在控制台中毫无问题地获取它。只需绑定到
值
,而不是ngModel
。这是不必要的
<input name="value" [value]="value | number : '1.2-2'"/>
问题不在于
ngModel
,而在于OnPush
策略
在执行异步工作时,您需要通知更改检测器您的数据已更改
constructor(private cd: ChangeDetectorRef) {}
get() {
this.service.get(this.id).subscribe(
(data) => {
this.object = data;
this.name = this.object.name;
this.value = this.object.value;
// notify the cd here
this.cd.markForCheck();
},
(error) => {
console.log(error);
}
);
}
好的,我最后一次看这个。我现在明白你的问题了。我没有读标题,只是看了看你的代码 问题出在您的
值中。为了使值与数字管道一起使用,它必须是数字
或字符串
,但采用可解析的格式。在数字管道中转换值
时,首先将其解析为数字
。如果它不可解析,那么您将得到您得到的错误
您可能使用逗号作为十进制分隔符,这是不受支持的
“1,34”
不正确<代码>“1.34”
正确
如果我想进一步帮助您,我需要知道数据的值。值
<input [value]="units * 600 + 2500 | number" readonly type="text" name="grandtotal"
class="form-control" id="grandtotal" placeholder="Grand Total">
我在这里找到了更改或替换HTML type=“text”中类型的解决方案。如果您阅读了文档,不妨检查管道编号参数: 1.2-2={minIntegerDigits}.{minFractionDigits}-{maxFractionDigits} 其中: 最小整数位数:小数点前的最小整数位数。默认值为1 minFractionDigits:小数点后的最小位数。默认值为0
maxFractionDigits:小数点后的最大位数。默认值为3。它仍然不显示值,我是否遗漏了什么?您使用的是OnPush更改检测策略吗?我在init上使用它。当我添加code.data.value显示0.02时会发生同样的情况,当我对对象进行控制台日志时,它是一个字符串。我已经没有答案了。如果你能创建一个带有问题演示的stackblitz,那就是bes。即使我把“car”放进数字管道,我也会得到一个不同的错误。
<input [value]="units * 600 + 2500 | number" readonly type="text" name="grandtotal"
class="form-control" id="grandtotal" placeholder="Grand Total">