Как использовать RegExp в Директиве с проверкой на Angular 8 - PullRequest
0 голосов
/ 01 мая 2020

У меня 8 angular заявка. и у меня есть директива с RegExp для валидации youtube и vimeo.

Но после того, как я объявил RegExp, я не могу использовать его в директиве.

Итак, у меня есть это:


@Directive({
  selector: '[appEcheqUrl][ngModel]',
  providers: [{ provide: NG_VALIDATORS, useExisting: EcheqUrlValidator, multi: true }]
})
export class EcheqUrlValidator {
  private urlpattern: RegExp = /(http:\/\/|https:\/\/)(vimeo\.com|youtu\.be|www\.youtube\.com)\/([\w\/]+)([\?].*)?$/;
  validate(control: AbstractControl): ValidationErrors {
    return EcheqUrlValidator.validatorFn(control);
  }

  static get validatorFn(): ValidatorFn {
    return (control: AbstractControl): ValidationErrors => {
      if (control.value && this.urlpattern){
        return {
          UrlRequired: true
        };
      }
      return null;
    };
  }

  constructor() {}
}

Но тогда я получаю эту ошибку:

Property 'urlpattern' does not exist on type 'typeof EcheqUrlValidator'.ts(2339)

ТАК, как это улучшить?

Спасибо

1 Ответ

1 голос
/ 01 мая 2020

Вам также нужно сделать urlPattern stati c, в противном случае он виден только для не * stati c методов. Вам также нужно будет ссылаться на него как EcheqUrlValidator.urlPattern.

...