Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 7-从导入的模块获取组件 我阅读了stack overflow向我提出的所有问题,没有一个解决了我的问题。_Javascript_Angular_Angular7_Angular Components_Angular Module - Fatal编程技术网

Javascript Angular 7-从导入的模块获取组件 我阅读了stack overflow向我提出的所有问题,没有一个解决了我的问题。

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

我是Angular的新手,我有两个
模块
组件
。我需要一个子模块来导入组件。然后让父模块导入子模块并创建其组件。是的,我已经导出了子模块中的组件

我希望如此:

  • 父模块
    • 子模块
      • 组件(玩具)
但我得到了一个错误:

父/父.module.ts(8,5)中出错:错误TS2304:找不到名称“ToyComponent”

我不明白这为什么不起作用。如果您能解释一下示例代码,我将不胜感激。谢谢


以下是相关代码:

玩具组件

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评论。)