我对Angular2完全不熟悉(没有以前的版本经验) - 有人会非常友好地解释bootstrap
作为NgModule
与bootstrap
的属性之间的区别方法?
例如,在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]);
如果有人甚至可以模糊地概述这里“引导”概念的应用差异,我们将非常感激。
答案 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(...)
方法。