如何从应用模块中导入的模块访问组件?

时间:2019-01-31 12:29:50

标签: angular typescript

我们有一个具有此层次结构的项目。

app/
├── app.component.html
├── app.component.ts
├── app.module.ts    <--moduleA and moduleB is imported here  
├── app-routing.module.ts
├── moduleA/
│   ├── moduleA-routing.module.ts
│   ├── moduleA.module.spec.ts
│   ├── moduleA.module.ts
│   ├── moduleA.component.ts
│   └── moduleA.component.html
├── moduleB/
│   ├── moduleB-routing.module.ts
│   ├── moduleB.module.ts     <-- moduleC is imported here
│   ├── moduleB.component.module.ts
│   ├── moduleB.component.html
│   ├── moduleB.component.ts
|   ├── moduleC/
│   │    ├── moduleC-routing.module.ts
│   │    ├── moduleC.module.ts
│   │    ├── moduleC.component.module.ts
│   │    ├── moduleC.component.html   --> Need to use moduleA component here
│   │    └── moduleC.component.ts

moduleCmoduleB的子模块。我们已经在moduleA中导入了AppModule。我们是否可以访问moduleAmoduleC的组件,而不必再次在moduleA内导入moduleC换句话说,是否有必要在子模块中再次导入AppModule中已经导入的模块以使用其组件?

当我尝试不再次在moduleC中导入moduleA时,它会抛出

  

“模板解析错误:{{selector name}}不是已知元素”

但是,如果它是导入的,则可以正常工作。

2 个答案:

答案 0 :(得分:0)

不要在app.module.ts文件中导入moduleA和moduleB。
在moduleB.module.ts中导入moduleA
并在moduleC.module.ts中导入moduleB
最后将moduleC导入app.module.ts
现在,您还可以访问moduleB和moduleC中的moduleA组件。

答案 1 :(得分:0)

您应该使用import:[ModuleA]甚至是export:[ModuleA],以便可以从外部模块访问它