Angular2 - bootstrap属性vs方法

时间:2016-12-27 07:50:10

标签: angular

我对Angular2完全不熟悉(没有以前的版本经验) - 有人会非常友好地解释bootstrap作为NgModulebootstrap的属性之间的区别方法?

例如,在Angular2 Tour of Heroes 教程中,app.module.ts包含以下内容:

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule
  ],
  declarations: [
    AppComponent,
    DashboardComponent,
    HeroDetailComponent,
    HeroesComponent
  ],
  providers: [ HeroService ],
  bootstrap: [ AppComponent ]
})

在其他例子中,我看过像:

let phoenixChannelsProvider = provide(PhoenixChannels, { useFactory: () => {
  return new PhoenixChannels("ws://localhost:4000/socket");
} });    
bootstrap(AppComponent, [phoenixChannelsProvider]);

如果有人甚至可以模糊地概述这里“引导”概念的应用差异,我们将非常感激。

2 个答案:

答案 0 :(得分:4)

你需要两个:

在第一个模块中,它是一个模块,基本上就是你的根模块

bootstrap: [ AppComponent ] 

这就是说,在这个模块中,我要启动我的应用程序的根组件是AppComponent,然后从那里取出。

是说这个模块是引导AppComponent,如果你注意到它是一个数组,这意味着你可以将多个应用程序作为你的根模块的一部分进行自举,这不是很常见。

但第二个,在最新版本的Angular中看起来像这样:

platformBrowserDynamic().bootstrapModule(AppModule)

实际上是自动启动/启动angular2 app。

Angular2框架需要一个起点吗?这是了解您的应用程序和所有内容的起点。

如果您来自Java背景,那么这是您的主要功能。

换句话说,应用程序需要从一个地方开始,这是起点(实际上不止于此)。

如果你注意到,方法 platformBrowserDynamic ,在某种程度上是自我解释的,它正在谈论一个浏览器平台,这意味着你可以创建自己的平台并引导你的应用程序根模块(引导你的appComponent )。

如果你搜索更多,你会发现NativeScript或Angular2Universal或其他,主要的区别是引导函数(platformBrowserDynamic)。

例如,在Universal中,我们有:

platformUniversalDynamic().bootstrapModule(AppModule)

或者当您想使用网络工作者时,您会看到:

  bootstrapWorkerApp(AppModule, []);

答案 1 :(得分:3)

bootstrap(AppComponent, [phoenixChannelsProvider]);

来自较旧的Angular2版本< = RC.5 且不再有效

BTW:Angular2的Dart版本没有NgModule,仍然使用bootstrap(...)方法。