我应该以什么顺序导入共享模块

时间:2017-11-04 03:47:41

标签: angular node-modules

我创建了一个像下面这样的共享模块。我已经读过某个地方,导入订单很重要,我现在找不到该链接。在某些地方它的工作正常但在其他地方我得到错误。我想知道这些模块的顺序,以避免任何错误。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import 'hammerjs';

import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { MaterialModule } from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout';
import { CoreModule } from './core/core.module';

// NOTE: The import order matters.
const modules = [
  CommonModule,
  CoreModule,
  ReactiveFormsModule,
  FormsModule,
  HttpClientModule,
  MaterialModule,
  FlexLayoutModule,
];

@NgModule({
  imports: modules,
  exports: modules
})
export class DependenciesModule { }

2 个答案:

答案 0 :(得分:2)

应用范围的单身人士

首先,我强烈建议不要在共享模块中包含应用范围的单例providers。导入该共享模块的延迟加载模块会创建自己的服务副本。

CoreModule(如果它包含应用范围的提供商)且HttpClientModule不应位于SharedModule

另见:

提供商优先级

您应该知道所有提供程序都添加到同一个注入器中(root或通过延迟加载创建)

当同时加载的两个导入模块列出具有相同令牌的提供者时,第二个模块的提供者"获胜"。当Angular寻找为该令牌注入服务时,它会创建并传递由第二个提供者创建的实例。

如果模块A为令牌提供服务' X'并导入模块B,该模块B还为令牌' X'提供服务,然后模块A的服务定义"胜出"。

根AppModule提供的服务优先于导入模块提供的服务。 AppModule总是赢。

另见:

路由

配置中路线的顺序很重要,这是设计的。

路由器在匹配路由时使用第一匹配胜利策略,因此应将更具体的路由放置在不太具体的路由上方。

这也意味着如果你有两个带路由配置的模块,你应该按正确的顺序导入它们。

另见:

如果这些模块仅包含组件,指令和管道,那么您如何订购模块没有区别。它们被合并到传递模块。

另见:

答案 1 :(得分:0)

试试这样:

在你的DependenciesModule中导出所有模块并将其导入另一个模块。

MONGODB | Topology type 'unknown' initializing.
MONGODB | Server xxx.xx.147.208:2200 initializing.
MONGODB | Topology type 'unknown' changed to type 'single'.
MONGODB | Server description for xxx.xx.147.208:2200 changed from 'unknown' to 'standalone'.
MONGODB | There was a change in the members of the 'single' topology.
MONGODB | xxx.xx.147.208:2200 | xxxx_development.count | STARTED | {"count"=>"news", "query"=>{}}
MONGODB | 116.62.147.208:2200 | xxxx_development.count | FAILED | not authorized on xxxx_development to execute command { count: "news", query: {} } (13) | 0.153356s
Completed 500 Internal Server Error in 364ms