Невозможно построить запрос для свойства, поскольку селектор запросов не был определен

В настоящее время эта проблема связана с компонентом в Angular 2, который существует из других компонентов. Компоненты "основного" компонента могут существовать несколько раз в иерархии.

Но я получаю эту ошибку: "Невозможно построить запрос для свойства" navComponent "из" SidenavLinkComponent ", поскольку селектор запросов не определен"

SidenavLinkComponent:
@ContentChild(SidenavNavComponent) navComponent: SidenavNavComponent;

SidenavNavComponent:
@ContentChildren(SidenavLinkComponent) linkComponents: QueryList<SidenavLinkComponent>;

Я сделал этот тонкий плункер, где показана проблема: Plunker

Я понятия не имею, почему это происходит.

Ответы

Ответ 1

Это из-за круговой зависимости между SidenavComponent и SidenavNavComponent. Это можно решить, используя forwardRef. Не забудьте также импортировать его:

import { forwardRef } from '@angular/core';

@ViewChild(forwardRef(() => SidenavNavComponent))
private navComponent: SidenavNavComponent;

Пример плунжера

Ответ 2

То же самое, когда я использую QueryList для ViewChildren

import { ViewChildren, QueryList,forwardRef } from '@angular/core';

@ViewChildren(forwardRef(() => SidenavLinkComponent))
private sidenavLinkComponents: QueryList<SidenavLinkComponent>;