У меня есть массив объетов типа
Layer
:
let layers = [new ALayers(), new BLayers()];
Я их получаю из сервиса
groupLayersService
в компоненте:
@Component({
selector: "layer-group",
});
class LayerGroup {
constructor(private groupLayersService: GroupLayersService) {}
}
Далее в компоненте прогоняю через цикл в шаблоне и отправляю конкретный layer инстанс компоненту-ребенку:
<div *ngFor="let layer in groupLayersService.getLayers()">
<app-block-layer [layer]="layer"></app-block-layer>
</div>
Все вроде бы хорошо. Дальше в каждом компоненте
app-block-layer
есть компонент
app-tree
который рендерит дерево на основе сервиса, котрый получает слой
layer
.
Т-е компонент
app-tree
инжектирует уже готовый инстанс дерева
Tree
на основе подтипов:
[new ALayers(), new BLayers()]
Вопрос - в каком месте создавать инстансы деревьев, судя по всему в компоненте
app-block-layer
- именно в нем я конкретно знаю с каким типом
new ALayers(), new BLayers()
я работаю. Значит могу знать какой тип дерева создать
new ALayersTree(), new BLayersTree()
, чтобы компонент
app-tree
заинжектил готовый инстанс. Причем компонент не знает точно - это
new ALayersTree(), new BLayersTree()
- но он знает что это тип
Tree
от которого унаследованы
new ALayersTree(), new BLayersTree()
.