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">