无法为属性构造查询,因为未定义查询选择器

Blo*_*lom 28 angular

目前,Angular 2中存在其他组件的组件存在此问题."main"组件的组件可以在层次结构中多次存在.

但我收到此错误: "无法为"SidenavLinkComponent"的属性"navComponent"构建查询,因为未定义查询选择器"

SidenavLinkComponent:
@ContentChild(SidenavNavComponent) navComponent: SidenavNavComponent;

SidenavNavComponent:
@ContentChildren(SidenavLinkComponent) linkComponents: QueryList<SidenavLinkComponent>;
Run Code Online (Sandbox Code Playgroud)

我已经制作了这个纤细的羽毛球,问题出现了: Plunker

我不知道为什么会这样.

Gün*_*uer 65

这是因为之间的循环依赖的SidenavComponentSidenavNavComponent.它可以使用forwardRef解决.别忘了导入它:

import { forwardRef } from '@angular/core';
Run Code Online (Sandbox Code Playgroud)

@ViewChild(forwardRef(() => SidenavNavComponent))
private navComponent: SidenavNavComponent;
Run Code Online (Sandbox Code Playgroud)

Plunker的例子

  • 你应该为'Angular`团队工作,你知道这么多黑魔法!^ _ ^ (5认同)
  • @贝尔特谢谢。花了很多时间学习。角度很有趣:) (2认同)
  • 它不一定是循环依赖。缺少依赖项也会导致此问题。例如`import { UndefinedService } from './somewhere'` (2认同)