我有一个奇怪的错误。我需要显示输入[type =" text"]或输入[type =" number"],具体取决于条件ng-if中的值:
{{ column.item === 'number' }}
<input ng-model="inserts[pointers.headings.content.tabInserts - 1].dados[0][columnId].value"
class="form-control"
placeholder="{{ column.default }}"
ng-if="column.item === 'text' && !column.extra"/>
<input
ng-model="inserts[pointers.headings.content.tabInserts - 1].dados[0][columnId].value"
class="form-control"
type="number"
placeholder="{{ column.default }}"
ng-if="column.item === 'number' && !column.extra" />
我有一个奇怪的结果:...当插入[pointers.headings.content.tabInserts - 1] .dados [0] [columnId] .value 是前一个之后的字符串一个数字。
即使{{column.item ===&#39; number&#39;正确显示&#34;错误&#34;并且不会显示第二个输入,AngularJS继续发送此错误:
错误:[ngModel:numfmt] http://errors.angularjs.org/1.6.4/ngModel/numfmt?p0=John
为什么?它不应该试图这样做。有人有个主意吗?
答案 0 :(得分:1)
我认为您从错误中获得了足够的信息:https://docs.angularjs.org/error/ngModel/numfmt?p0=John
预期
John
为数字
您可以将其复制为:
<tr ng-repeat="x in ['Jhon']">
<td>
<input type="number" ng-model="x" /> {{ x }} : {{ typeOf(x) }}
</td>
</tr>
VM424 angular.min.js:124 Error: [ngModel:numfmt] http://errors.angularjs.org/1.6.7-build.5459+sha.21a2f4b/ngModel/numfmt?p0=Jhon
at VM424 angular.min.js:7
at Array.<anonymous> (VM424 angular.min.js:187)
at VM424 angular.min.js:192
at m.$digest (VM424 angular.min.js:147)
at m.$apply (VM424 angular.min.js:150)
at VM424 angular.min.js:22
因此,请确保inserts[pointers.headings.content.tabInserts - 1].dados[0][columnId].value
是一个数字,而不是Jhon
如果您使用数字作为字符串,则可以使用string-to-number
指令:
.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);
});
}
};
});
HTML 的
<table>
<tr ng-repeat="x in ['Jhon', '2']">
<td>
<input type="number" string-to-number ng-model="x" /> {{ x }} : {{ typeOf(x) }}
</td>
</tr>
</table>