2017-08-13 85 views
2

典型根模块看起来像这样角4根模块“进口”和在角度4“进口”

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 { } 

在本文档中,提到“在单根模块的上面的例子,该应用程序模块需要该浏览器模块中的材料。要访问该材料,请将其添加到@NgModule元数据导入中,如下所示。“ imports: [ BrowserModule ],

我的问题是:

什么是“应用模块需要的材料从该浏览器模块中的”是什么意思?

这个进口import { BrowserModule } from '@angular/platform-browser';和这个imports: [ BrowserModule ],有什么区别?

有人能帮我理解在根模块中使用imports的目的吗?

+0

https://angular.io/guide/ngmodule-faq –

+0

[angular2 - '导入'和'导出'如何在Angular2模块中工作?](https://stackoverflow.com/questions/41281780/angular2-how-do-imports-and-exports-work-in-angular2-modules) – Milad

+0

AppModule =应用程序模块.... BrowserModule嵌入在此中。顶部的导入用于定位它的位置 – JGFMK

回答

1

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

这可能意味着几件事。首先,这可能意味着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模块无关。