Angular 4根模块'import'和'import'

时间:2017-08-13 11:17:38

标签: angular typescript

角度4中的典型根模块看起来像这样

lhs == false

在文档中,提到“在上面简单根模块的示例中,应用程序模块需要来自该浏览器模块的材料。要访问该材料,请将其添加到@NgModule元数据导入中。” import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, FormsModule, HttpModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

我的问题是:

“应用程序模块需要来自该浏览器模块的材料”是什么意思?

此导入imports: [ BrowserModule ],与此import { BrowserModule } from '@angular/platform-browser';之间有何区别?

有人可以帮我理解在根模块中使用imports: [ BrowserModule ],的目的吗?

1 个答案:

答案 0 :(得分:2)

  

应用程序模块需要什么材料才能实现   浏览器模块“是什么意思?

这可能意味着几件事。首先,它可能意味着browser模块定义了一些需要作为全局注入器提供的提供者。它还可能意味着根模块中定义的组件将使用browser模块中的一些可声明类型。实际上,如果你看一下BrowserModule定义,你会发现它们都是:

@NgModule({

  // global providers
  providers: [
    BROWSER_SANITIZATION_PROVIDERS,
    {provide: ErrorHandler, useFactory: errorHandler, deps: []},
    {provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true},
    ...
  ],

  // declarable types - components/directives/pipes
  // declared in common and application modules
  exports: [CommonModule, ApplicationModule]
})
export class BrowserModule {

我建议你阅读Avoiding common confusions with modules in Angular

  

此导入import { BrowserModule } from '@angular/platform-browser';与此imports: [ BrowserModule ]

之间有何区别?

不同之处在于前者导入ESM模块而后者导入Angular模块。 ESM/Typescript modules与Angular模块无关。