У меня возникли некоторые проблемы с моей пользовательской директивой, и она по какой-то причине не зарегистрирована.Я добавил следующую пользовательскую директиву в массив 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>