Невозможно построить запрос для свойства, поскольку селектор запросов не был определен
В настоящее время эта проблема связана с компонентом в 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>;