Javascript Angular 7-从导入的模块获取组件 我阅读了stack overflow向我提出的所有问题,没有一个解决了我的问题。
我是Angular的新手,我有两个Javascript Angular 7-从导入的模块获取组件 我阅读了stack overflow向我提出的所有问题,没有一个解决了我的问题。,javascript,angular,angular7,angular-components,angular-module,Javascript,Angular,Angular7,Angular Components,Angular Module,我是Angular的新手,我有两个模块和组件。我需要一个子模块来导入组件。然后让父模块导入子模块并创建其组件。是的,我已经导出了子模块中的组件 我希望如此: 父模块 子模块 组件(玩具) 但我得到了一个错误: 父/父.module.ts(8,5)中出错:错误TS2304:找不到名称“ToyComponent” 我不明白这为什么不起作用。如果您能解释一下示例代码,我将不胜感激。谢谢 以下是相关代码: 玩具组件 import { Component, OnInit } from '@a
模块
和组件
。我需要一个子模块来导入组件。然后让父模块导入子模块并创建其组件。是的,我已经导出了子模块中的组件
我希望如此:
- 父模块
- 子模块
- 组件(玩具)
- 子模块
以下是相关代码: 玩具组件
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-toy',
templateUrl: './toy.component.html',
styleUrls: ['./toy.component.css']
})
export class ToyComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
玩具组件HTML
<p>
Awesome toy!
</p>
<p>
parent works! Child: Toy: <app-toy></app-toy>
</p>
父模块
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ToyComponent } from './toy/toy.component';
import { ChildComponent } from './child.component';
@NgModule({
declarations: [
ToyComponent,
ChildComponent
],
imports: [
CommonModule
],
exports: [
ToyComponent
]
})
export class ChildModule { }
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ChildModule } from './child/child.module';
import { ParentComponent } from './parent.component';
@NgModule({
declarations: [
ToyComponent,
ParentComponent
],
imports: [
ChildModule,
CommonModule
],
exports: [
]
})
export class ParentModule { }
父组件HTML
<p>
Awesome toy!
</p>
<p>
parent works! Child: Toy: <app-toy></app-toy>
</p>
家长工作!儿童:玩具:
修复:1.从父模块的声明和导出中删除
ToyComponent
2.在
子模块中声明ToyComponent
,并将其导出。
3.将ChildModule
作为导入添加到父模块
原因:
您的ToyComponent
在您的ChildModule
下声明。由于您在父模块中使用ToyComponent
,因此需要从子模块中导出ToyComponent
。并在您的父模块中导入子模块
问题
ParentModule
中似乎缺少ToyComponent
的导入语句,从而导致错误
修复
- 由于
ToyComponent
已添加到ChildModule
中的exports
,因此必须
不能在父模块中引用
- 从列表中删除
ToyComponent
声明
-列在父模块
ToyComponent
为ParentModule
所知,因为ChildModule
已添加到imports
-列表中。在父组件中,您不需要在导出和声明数组中包含ToyComponent导出是一个意外。我已经更新了代码。为什么不在声明中呢?我想我必须在使用它的每个模块中声明它。如果没有,我应该在哪里声明组件?声明数组包含“属于此模块的组件、指令和管道”。(根据)。ToyComponent是属于ChildModule的组件。它不属于父模块。因为,您不需要将其作为声明添加到父moduleThanks中进行解释,我确实有另一个与此相关的问题。我希望您能回答:由于我不能声明组件
,我将如何使用路由来实现这一点。如果我有一个到父级的路由,并且在父级中我有:constparentroutes:Routes=[{path:'',component:ToyComponent}]代码>。我又犯了同样的错误<代码>找不到名称…
。我该如何解决这个问题?不要在父路由中定义子模块路由,定义到子模块的路由,并在子模块中实现自己的路由器模块。谢谢,尽管您的解决方案解决了我的问题,但它并不是我问题的答案。您的“问题”表明我没有将ToyComponent
导入父级。这正是我试图避免的事情。不用担心,import语句的意思是:import{ToyComponent}from…
。这与角度无关。我只是想解释一下为什么你会在控制台中收到这个错误。也许,我可以表达得更好一点。谢谢你的反馈!这很有道理,谢谢你。我有一个与此相关的问题,如果我有一个到父级的路由,我将如何使用它,因为我必须提到路由
数组中的组件,对吗?对,路由需要配置路径和相应的组件。如果要导航到此路由,可以使用指令routerLink
(构建href)或插入Angular的路由器
。您可以使用以/
开头的绝对路径或访问父节点的相对路径。/../parent path
通常,您使用加载子节点
引用子模块
。ChildModule
有自己的RouterModule
,它定义了ToyComponent
的路由。这样您就不需要在ParentModule中引用yComponent了。谢谢,我已经将它导出和导入了,但不知道我不应该声明它。(想知道原因的人,请阅读问题下方的Dilan Tharaka评论。)