为什么在角度中声明模块中的组件

时间:2018-06-03 11:18:16

标签: angular

Angular 6.x。

创建组件时,您必须在declarations部分的某个模块中声明它,例如this

app.module.ts:

  declarations: [
    AppComponent,
    DashboardComponent,
    HeroSearchComponent,
    HeroesComponent,
    HeroDetailComponent,
  ],

乍一看,我认为这可以用来确保其他模块可以通过先导入模块来导入组件。

但是我发现一个模块(app.routing.module)可以直接导入app.module this来导入在其他模块(path)中创建的组件,但它没有导入app.module

app.routing.module.ts

const routes: Routes = [
  { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
  { path: 'dashboard', component: DashboardComponent },
  { path: 'detail/:id', component: HeroDetailComponent },
  { path: 'heroes', component: HeroesComponent }
];

这有意义吗?

我不知道你为什么要投票支持这篇文章,而我接受这可能对你来说这是一个愚蠢的问题。但请不要关闭它。

因为我对模块化系统感到困惑。因为我无法在官方例子中找到必要性。

2 个答案:

答案 0 :(得分:1)

这两个配置完全不同,属于模块的组件应该在module.ts中导入。需要在其他模块之间共享组件,应在exports内添加。

但是,组件需要使用routing.module.ts中的路径进行特定,以便在使用不同路径导航应用程序时加载它们。

答案 1 :(得分:0)

要记住三件事。

  1. 组件导出类。

  2. 可以在任何文件中导入这些导出的类。导入组件类的这些FILES可以是打字稿组件或模块。

  3. 模块只不过是一些文件,它们可以让您将所需的组件捆绑在一起,并且将依赖于彼此。 MODULE 应该能够执行其业务逻辑,并且不应该依赖于任何不属于该模块的部分来执行相同的逻辑。

  4. 可以在其他模块中导入模块。模块导出的组件和服务可以由其他模块导入。
  5. 就路由模块而言,将路由分离为单独的模块是一种很好的做法。这是因为如果您正在创建涉及复杂逻辑和大量路由的应用程序,则应用程序模块文件将变得混乱,因此可能涉及保护逻辑的路由应该分开。
  6. 如前所述,模块可以导入另一个模块。因此可以在app模块中导入路由模块。路由模块导入组件文件,因为它需要路径将路由到的组件的有效声明。应用程序模块还声明它们,因为应用程序需要知道这些组件的存在。