Angular 2,何时在appmodule中引用模块以及何时在组件中引用?

时间:2017-03-19 01:49:49

标签: angular

我正在尝试使用Angular2创建我的第一个应用程序,当我需要使用Http服务时,我需要使用

将其添加到我的ngModule中
import {HttpModule} from '@angular/http' 

然后在导入中引用它,之后我需要在service.ts文件中引用它,如下所示:

import {Http} from '@angular/http'

到目前为止一切顺利。现在为什么当我需要使用ngModel时,我需要仅在ngModule中引用FormsModule,如下所示:

import {FormsModule} from '@angular/forms'

为什么不像在Http模块中那样引用组件文件中的FormsModule?

我错过了什么吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

http是一项服务。需要时需要导入服务(即组件构造函数中的依赖注入)。

ngModel是一个指令。指令和组件需要在ngModule定义中声明,但它们不需要包含在组件定义文件中。

@NgModule({
    declarations: [MyComponent, MyDirective, etc]
})

如果组件和指令可用于导入它们的模块,则需要导出它们:

儿童模块:

@NgModule({
    // MyComponent and MyDirective are available to Sub-Components
    declarations: [MyComponent, MyDirective, etc],
    // MyComponent is public to the module, MyDirective is private
    exports: [MyComponent]
})
export class ChildModule {}

父模块:

@NgModule({
    // MyComponent is available in sub-components in ParentModule
    imports: [ChildModule]
})
export class ParentModule {}