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