Как получить доступ к этому контексту в Angular Class? - PullRequest
0 голосов
/ 31 декабря 2018

Еще одна проблема «контекста».

У меня есть эта самая функция с именем ' isInDatabase () '.Это должен быть пользовательский валидатор, я получил вдохновение на странице Github 'angular / validator'.

Как вы можете видеть, я вызываю функцию ' this.clientService.checkElement ',И, как объявлено, я получаю сообщение об ошибке: «Не удается прочитать свойство« checkElement »из неопределенного».

Подсказка 1: (?)

В соответствиик тому, что я уже видел и прочитал, контекст изменился, даже если я использую функцию стрелки, потому что эта функция стрелки включена в другую функцию.

Подсказка 2: (?)

Я пытался реализовать это: constructor (private clientService: ClientService) {}, но затем произошла ошибка: ошибка TS2339: свойство 'clientService' не существует для типа 'typeof CustomValidators'.

Вот код:

export class CustomValidators {

    private static clientService: ClientService;

  static isInDatabase(elementType: string): ValidatorFn {
    return (control: AbstractControl): ValidationErrors | null => {
      this.clientService.checkElement(control.value, elementType)
        .subscribe(() => {
            return {isInDB: true};
          },
          (error) => {
            return {isInDB: true};
          });
      return (null);
    };
  }
}

1 Ответ

0 голосов
/ 31 декабря 2018

Вы не можете получить доступ к this из статического метода, потому что this ссылается на экземпляр этого класса, и у вас нет экземпляра в статическом методе.

Эта статья также хорошо читается, чтобы лучше понять 'this' в TypeScript .

...