我正在创建自定义输入指令。我的目标是实现form.FormController
行为与<input>
ng-require="true"
元素相同
.directive('myinput', function($window, $location, $sce, $dropdown) {
return {
restrict: 'A',
require: '^form',
scope: {
model: '=myModel'
},
link: function postLink(scope, element, attr, formCtrl) {
scope.$watch('model', function(newValue, oldValue) {
if (newValue) {
formCtrl.$setValidity(attr.myModel, true);
} else {
formCtrl.$setValidity(attr.myModel, false);
}
}, true);
}
}
以上示例正常工作form[myModel].$valid
变为true或false,具体取决于myModel值。但我想要的是form[myModel].$error.required
成为现实。
我可以实现这种行为吗?
答案 0 :(得分:1)
$ setValidity方法的第一个参数是验证器令牌,所以你可以这样做:
/*
Point first to your input field -> formCtrl[attr.myModel]
and after that set the type of validator token: 'required' in your example
*/
formCtrl[attr.myModel].$setValidity('required', true);
检查此示例使用内置必需指令和自定义指令: