Создать пользовательский FluentRule для валидации aurelia - PullRequest
0 голосов
/ 20 сентября 2019

До Aurelia-Validation 1.3.0 было возможно добавить пользовательский FluentRule для проверки aurelia, как указано в этой теме .Однако я не могу заставить его работать с более новой версией, например, с последней (1.5.0).

Мой код:

import { FluentRuleCustomizer, FluentRules, validationMessages, ValidationRules, FluentEnsure } from 'aurelia-validation';

export function validateEmailPattern(value: any, obj: any, pattern: RegExp) {
    return value === null || value === undefined || pattern.test(value);
}
export function configureValidation() {
    ValidationRules.customRule(
        'validEmailPattern',
        validateEmailPattern,
        `\${$displayName} must be a valid email format`);
}

declare module 'aurelia-validation/dist/aurelia-validation' {
    interface FluentRules<TObject, TValue> {
        validEmailPattern(value: RegExp): FluentRuleCustomizer<TObject, TValue>;
    }

    interface FluentRuleCustomizer<TObject, TValue> {
        validEmailPattern(value: RegExp): FluentRuleCustomizer<TObject, TValue>;
    }
}

FluentRules.prototype.validEmailPattern = function(value: RegExp) {
    return this.satisfiesRule('validEmailPattern', value);
};

FluentRuleCustomizer.prototype.validEmailPattern = function(value: RegExp) {
    return this.satisfiesRule('validEmailPattern', value);
};

Сообщение об ошибке:

Unhandled promise rejection: reason=TypeError:
aurelia_validation_1.ValidationRules.ensure(...).required(...).satisfiesRule(...).ensure(...).required(...).ensure(...).required(...).satisfiesRule(...).when(...)
.ensure(...).required(...).when(...).ensure(...).required(...).when(...).then(...).validEmailPattern is not a function

Есть идеи или подсказки, как это можно сделать с помощью aurelia-validation 1.5.0 и машинописного текста?Я знаю, что есть правило соответствия, которое можно использовать с шаблоном, но это только пример, есть еще несколько правил, которые я хочу определить таким образом.

Заранее благодарен за любую помощь.

1 Ответ

0 голосов
/ 20 сентября 2019

Убедитесь, что у вас нет дубликатов папок проверки aurelia, находящихся в локальных зависимостях пакетов.Может случиться так, что вы исправите FluentRules из дубликата пакета

...