これをあきらめたら、もう一度問題が発生しましたが、回避策が見つかりませんでした。 Fortunatel、私は解決策を見つけました:
カスタムバリデータを作成するときは、フォームフィールドではなくモデルフィールドにバインドする必要があります。これにより、常に正しく検証されます(フォームフィールドにある$ modelValueと$ viewValueのプロパティの違いに起因していると考えられます)。参考のために以下のコードを参照してください。
<input type="password" class="form-control" id="confirmpass" name="confirmpass" placeholder="Repeat Password"
ng-model="controller.selectedUser.passwordRepeat"
compare-to="controller.selectedUser.password"/>
とカスタムバリデータ:カスタムバリデータがなかった理由を全体的に問題に良い解決策のように思えるが、私は本当に好奇心旺盛になり
angular.module("compareTo", []).directive("compareTo", function() {
return {
require: "ngModel",
scope: {
otherModelValue: "=compareTo"
},
link: function(scope, element, attributes, ngModel) {
ngModel.$validators.compareTo = function(modelValue) {
return modelValue == scope.otherModelValue;
};
scope.$watch("otherModelValue", function() {
ngModel.$validate();
});
}
};
);
は理解するが意図どおりに動作します。 – CatalinM