Эта ошибка возникает из-за того, что метод UniqueNameValidator
выполняется с отличным от контекста компонента this
. Причина этого в том, что в контексте javascript this
зависит от того, как выполняется функция, а не от того, где она была объявлена.
Простое исправление заключается в использовании Function.prototype.bind метода, который обеспечивает правильный контекст this
this.UniqueNameValidator.bind(this)
Кроме того, если ваш валидатор является синхронным, вам нужно заключить валидаторы в массив, иначе Angular будет рассматривать его как асинхронный валидатор:
name: ['', [Validators.required, this.UniqueNameValidator.bind(this)]],