angular4学习笔记:@NgModule
@NgModule:负责管理依赖的最重要的一部分,通过@NgModule你可以把一些特定的功能,业务逻辑,程序或者其他的逻辑方法封装成一个模块集合。在这个模块(module)中包含所有的组件,服务,管道和指令,不需要在其他地方重复声明这些依赖。
@NgModule({
/* providers: 这个选项是一个数组,需要我们列出我们这个模块的一些需要共用的服务,然后我们就可以在这个模块的各个组件中通过依赖注入使用了. providers : Provider[] */
providers : Provider[],
/* imports: 数组类型的选项,我们的模块需要依赖的一些其他的模块,这样做的目的使我们这个模块,可以直接使用别的模块提供的一些指令,组件等等. */
imports: [ BrowserModule ],
/* declarations: 数组类型的选项, 用来声明属于这个模块的指令,管道等等,然后我们就可以在这个模块中使用它们了. */
declarations: [ AppComponent ],
/* bootstrap: 数组类型选项, 指定了这个模块启动的时候应该启动的组件.当然这些组件会被自动的加入到entryComponents中去 */
bootstrap: [ AppComponent ],
/* exports: 数组类型的选项,我们这个模块需要导出的一些组件,指令,模块等; 如果别的模块导入了我们这个模块, 那么别的模块就可以直接使用我们在这里导出的组件,指令模块等. */
exports : Array<Type<any>|any[]>,
/* entryComponents: 数组类型的选项,指定一系列的组件,这些组件将会在这个模块定义的时候进行编译 // Angular会为每一个组件创建一个ComponentFactory然后把它存储在ComponentFactoryResolver */
entryComponents : Array<Type<any>|any[]>
/* schemas: 不属于Angular的组件或者指令的元素或者属性都需要在这里进行声明 */
schemas : Array<SchemaMetadata|any[]>
/* id: 字符串类型的选项,模块的隐藏ID,它可以是一个名字或者一个路径;用来在getModuleFactory区别模块,如果这个属性是undefined , 那么这个模块将不会被注册 */
id : string
})