【发布时间】:2018-08-13 03:25:17
【问题描述】:
如果您在下面的示例中删除输入元素中的初始文本,那么在您模糊该元素之前它不会显示错误。
我想让输入元素下划线变成红色,当你删除输入中的最后一个字符时立即显示错误。
有人有什么想法吗?
var app = angular.module('myApp', ['ngMaterial', 'ngMessages']);
app.controller('DemoCtrl', function() {
this.name = 'test text';
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Angular JS</title>
<link
rel="stylesheet"
href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.6/angular-material.min.css">
</head>
<body ng-app="myApp">
<div ng-controller="DemoCtrl as demo">
<form name="testForm">
<md-input-container>
<input
name="testInput"
ng-model="demo.name"
required
aria-label="test input"
type="text">
<ng-messages
for="testForm.testInput.$error"
role="alert">
<ng-message when="required">
<span>
required
</span>
</ng-message>
</ng-messages>
</md-input-container>
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular-messages.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.6/angular-material.min.js"></script>
</body>
</html>
【问题讨论】:
-
这似乎是
md-input-container的一个怪癖;删除md-input-containter显示ng-message运行正常。我正在尝试研究这个问题,但我通常不使用 Material。 -
不要为了不丑的修复而屏住呼吸。不幸的是,Angular Material 1 处于可悲的忽视状态。
-
我从不放弃希望:P。我找到了答案,并发布了一种使用 Angular Material 解决此问题的方法。
-
你会看那个:)
-
@Sammi 您标记为正确的答案没有任何意义。请阅读
md-is-error-material.angularjs.org/latest/api/directive/mdInputContainer 的文档。这是零效应解决方案,因为在这里使用testForm.testInput.$invalid作为表达式具有零效应。另一方面,它为您的应用程序添加了一个新指令,由于性能提升可以避免该指令。
标签: javascript angularjs angularjs-material ng-messages