Можно ли получить доступ к директиве внутри компонента, на который повесили директиву?

У меня есть следующий код:

<my-extremely-brilliant-component myDirective></my-extremely-brilliant-component>

Можно ли внутри компонента MyExtremelyBrilliantComponent получить доступ к директиве myDirective?


Ответы (1 шт):

Автор решения: overthesanity

https://angular.io/guide/hierarchical-dependency-injection#directive-and-component

Components and directives on the same element share an injector.

Поэтому любую директиву можно получить из инжектора компонента посредством DI:

class MyExtremelyBrilliantComponent {
  constructor(@Inject(MyDirective) @Self() @Optional() myDirective: MyDirective | null) {
    if (myDirective !== null) {
      // Директива была привязана к компоненту...
    }
  }
}

@Optional() - это флаг, который говорит инжектору не кидать эксепшн No provider for MyDirective в случаях, когда директива не была привязана к компоненту.

→ Ссылка