Как я могу получить доступ к компонентам ng-контента от родителя? - PullRequest
0 голосов
/ 24 апреля 2020

Я знаком с понятием @ContentChildren, но мой случай почему-то не появляется в Angular Библии, они даже написали это:

Не извлекает элементы или директивы, которые находятся в Шаблоны других компонентов, поскольку шаблон компонента всегда является черным ящиком для его предков.

У меня есть эта разметка:

<layers>
 <layer></layer>
 <layer></layer>
</layers>

Это то, что я пытался делать, и я все время получаю пустой список:

import {
    AfterContentInit,
    ChangeDetectionStrategy,
    Component,
    ContentChildren,
    QueryList
} from '@angular/core';

@Component({
    selector: 'layers',
    changeDetection: ChangeDetectionStrategy.OnPush,
    template: '<ng-content></ng-content>'
})
export class LayersComponent implements AfterContentInit {
    @ContentChildren(LayerComponent) layers:QueryList<LayerComponent>;
    constructor() {
    }

    ngAfterContentInit(): void {
        console.log(this.layers);
    }
}

Решение, которое мне помогло - использовать сервис root, который внедряется в каждый слой и предоставляет API для регистрации текущего экземпляр компонента в сервис - но это усложняет для меня, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...