Javascript AngularJS在非必填字段中显示关于无效值的消息

Javascript AngularJS在非必填字段中显示关于无效值的消息,javascript,angularjs,Javascript,Angularjs,我有下一个标记: <input type="number" name="test" ng-model="data.test" step="any" ng-pattern="/^\d*[\.|,]?\d*$/" /> <span class="error" ng-show="!editForm.test.$valid || editForm.test.$error">Please, enter valid decimal number, such as 15.6</s

我有下一个标记:

<input type="number" name="test" ng-model="data.test" step="any" ng-pattern="/^\d*[\.|,]?\d*$/" />
<span class="error" ng-show="!editForm.test.$valid || editForm.test.$error">Please, enter valid decimal number, such as 15.6</span>

请输入有效的十进制数,如15.6
当我编辑这个输入标记中的值时,关于无效值的消息(在span标记中)不会显示,表单提交后值将设置为null。当我被写入此输入的必需属性时,会显示消息,但我不需要此字段。如何强制AngularJS在没有必需属性的情况下显示错误消息

编辑:

1.抱歉,$error无法正常工作

2.JSFIDLE:。在第一个字段中键入非数字,在下一个字段中也键入非数字,然后您可以看到不同的结果。

在JSFIDLE中,在第一种情况下,奇怪的是,如果您使用Type=“text”,那么验证错误将正确显示,并且在开发工具中,您将看到ng invalid模式被添加到输入中

如果您查看开发人员工具,在第二种情况下,如果您给出了任何无效的数字,则会将类ng invalid required添加到输入中,而不是ng invalid模式


如果没有使用type=number的具体原因,那么可以使用type=text作为输入控件

请为您的问题添加一个plunkr或jsfiddle。我需要使用type=“number”,然后,在第一个字段中有ng valid和ng valid pattern类,但在字段中,我键入了不带数字的字符串表达式。