Я хочу внедрить хост-компонент в его дочерний компонент с помощью Dependency Injection.
Моя проблема сейчас заключается в том, что разметка динамическая и существует более одного возможного хост-компонента.Далее нужны только ближайшие компоненты хоста.Каков наилучший способ получить ближайший компонент хоста?
Поэтому я подготовил приложение stackblitz: https://stackblitz.com/edit/angular-7mpnas
Это пример HTML-разметки
<comp-a [name]="'Lorem'">
<comp-b [name]="'ipsum'">
<comp-c [name]="'dolor'">
<comp-b [name]="'sit'">
<div class="someDivClass">
<hello></hello>
</div>
</comp-b>
</comp-c>
</comp-b>
</comp-a>
И составляющая:
import { Component, Input, Optional, Host, OnInit } from '@angular/core';
import { CompA } from './comp-a/comp-a.component';
import { CompB } from './comp-b/comp-b.component';
import { CompC } from './comp-c/comp-c.component';
@Component({
selector: 'hello',
template: `<h1>Hello {{name}}!</h1>`,
styles: [`h1 { font-family: Lato; }`]
})
export class HelloComponent implements OnInit {
constructor(
@Optional() @Host() private a: CompA,
@Optional() @Host() private b: CompB,
@Optional() @Host() private c: CompC,
) {
}
ngOnInit() {
console.log(this.a.name);
console.log(this.b.name);
console.log(this.c.name);
// what Component is the closest Host Element
}
}
С наилучшими пожеланиями ...