Angular2 - 根模块的提供者和引导程序

时间:2017-11-21 04:19:10

标签: angular typescript angular-module

在根模块(app.module.ts)中,

@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    DirectoryComponent,
    FilterPipe,
    LoggingService
  ],
  imports: [
    FormsModule,
    BrowserModule,
    HttpClientModule,
    routing
  ],
  providers: [],
  bootstrap: [AppComponent]
})

imports:[..]表示,根模块导入其他模块。

declarations:[..]表示由根模块创建和拥有的components / services / pipes / ..

providersbootstrap表示什么?

1 个答案:

答案 0 :(得分:1)

bootstrap只是一个从中挖掘出根组件的数组。在您的情况下,根目录为AppComponent,其中创建根组件的实例并将其插入由组件选择器标识的元素标记中。 AppComponent选择器(在您的情况下和大多数文档示例中)都是app-root,因此Angular会在index.html中查找<app-root>标记,如下所示:

<body>
  <app-root></app-root>
</body>  

提供者通常是单例(一个实例)对象,其他对象可以通过依赖注入(DI)访问。提供程序描述了注入器应该实例化给定标记的内容,因此它描述了如何创建某个标记的对象。 如果您计划多次使用对象,例如在不同组件中使用Http服务,则可以请求该服务的相同实例(重用它)。您可以在DI的帮助下通过提供DI为您创建的相同对象的引用来实现。

@Component){
  ..
  providers: [Http]
}
..instead of creating new object every time:

@Component){}
class Cmp {
  constructor() {
    // this is pseudo code, doens't work
    this.http = new Http(...options);
  }
}

提供商是Dependency Injection背后的一般概念。这是关于bootstrap and providers的一个非常好的例子。