在我的应用程序中,我收到错误:
角度错误:ngModel:numfmt模型的类型不是
number
HTML:
<input ng-model="price" type="number" name="price" placeholder="enter price" id="price" />
在我的控制器中,我尝试用这个来解决问题。但我没有运气。
$scope.$watch('price', function (val, old) {
$scope.value = parseInt(val);
});
如何捕获或缓解此问题?
如果您需要更多详细信息,请随时提出
答案 0 :(得分:11)
您应该使用stringToNumber
指令来解决此错误。 number
输入指令<input type="number">
要求模型为number
。要将数字存储为字符串,您应该使用stringToNumber
指令将其转换为input[number]
指令所期望的格式。请查看下面的代码段。
<input ng-model="price" string-to-number type="number" name="price" placeholder="enter price" id="price" />
这是指令(来自here):
.directive('stringToNumber', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$parsers.push(function(value) {
return '' + value;
});
ngModel.$formatters.push(function(value) {
return parseFloat(value, 10);
});
}
};
});
答案 1 :(得分:0)
<input .... />
我发现角度对它接受的输入很挑剔。我发现了一些困难的方法,花了一些时间调试我写的东西,我通过记事本++ XML格式化器来完美地布置,以验证没有不匹配的标签。
格式化程序已替换
<script .....></script>
带有自闭标签
<script ...../>
格式化程序在我的HTML中创建的XML样式自关闭标记阻止了角度无法正确解释我的文件。
某些标签,例如&lt; BR&gt;,&lt; meta&gt;和(我认为)&lt; input&gt;不需要关门。我不知道这是不是你的问题,但在调查任何问题之前,我肯定会编辑该文件以删除你自我关闭的输入标签。
答案 2 :(得分:0)
你可以创建一个stringToNumber指令来解析字符串到数字,这个完美的例子显示在下面的链接:https://docs.angularjs.org/error/ngModel/numfmt
答案 3 :(得分:0)
this.variable = isNaN(defaultValue.value)? defaultValue.value:parseInt(defaultValue.value);