验证 2 angular 个表单字段没有相同的内容

Validate that 2 angular Form fields do not have the same content

我有一个 angular 表单,由两个字段位置 A 和位置 B 组成。 我想要实现的是一个比较两个字段并相应地验证的指令,只要字段具有相同的位置,就适当地设置有效或无效字段的样式。

我曾尝试使用 ng-change = validateLocations() 插入逻辑,但根据我的研究,指令更适合 above.The 等场景,同样的逻辑也可以应用于验证 fromto 日期选择器上的日期。

我试过这样的事情:

.directive("locationANotEqual", function () {

        return {

            restrict: "A",
           require: "ngModel",
            link: function (scope, element, attr, ctrl) {

                ctrl.$validators.locationNotEqual= function (modelvalue) {
                    if (modelvalue !== scope.form.locationB) {
                        return true;

                    } else {

                        return false
                    }
                }
}
}
});

这方面我把属性放在了locationA输入栏上。 我想要的是能够在一个指令中而不是 2 个指令中合并对两个字段的检查。

向您的指令添加另一个参数并与该值而不是 scope.form.locationB 进行比较。对该值调用 attributes.$observe 进行更改,以便可以将指令的模型标记为 valid/invalid.

data-ng-model-options="{allowInvalid: true}" 用于当值匹配时,模型仍然设置。

app.directive('validateNotEqual', [
    function() {
        return {
            restrict: 'AE',
            require: '^ngModel',
            link: function(scope, element, attributes, ngModelCtrl) {
                if (!ngModelCtrl) {
                    return;
                }

                var errorKey = 'notEqual';

                ngModelCtrl.$validators[errorKey] = function(value) {
                    return value !== attributes.validateNotEqual;
                };

                attributes.$observe('validateNotEqual', function(value) {
                    ngModelCtrl.$setValidity(
                        errorKey,
                        value !== ngModelCtrl.$modelValue);
                });
            }
        };
    }
]);

plunker