Выпуск угловой пользовательской директивы валидатора - PullRequest
0 голосов
/ 01 июня 2018

У меня возникли некоторые проблемы с моей пользовательской директивой, и она по какой-то причине не зарегистрирована.Я добавил следующую пользовательскую директиву в массив app.module declarations.Так что я думаю, что это должно быть что-то еще, что я все еще скучаю.

Кроме того, интересно, что если я сделаю form.addControl('name', new FormControl('', [noWhitespaceValidator()]));, то проверка будет работать нормально, но когда я переключаюсь на использование пользовательского атрибута [myNoWhitespace], он завершается неудачно.Я сомневаюсь, действительно ли это вызвано использованием подхода Reactive From в данном случае, но я не слишком уверен.

@Directive({
    selector: '[myNoWhitespace]',
    providers: [{ provide: NG_VALIDATORS, useExisting: NoWhitespaceDirective, multi: true }]
})
export class NoWhitespaceDirective implements Validator {
    validator: ValidatorFn;

    constructor() {
        this.validator = noWhitespaceValidator();
    }

    validate(control: AbstractControl) {
        return this.validator(control);
    }
}

export function noWhitespaceValidator(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } => {
        const isWhitespace = (control.value || '').trim().length === 0;
        return !isWhitespace ? null : { 'whitespace': '' };
    };
}

<input type="text" id="name" formControlName="name" name="name" myNoWhitespace>
...