NgModule
一个容器,存放专注于某个应用领域,某个工作流,一组紧密相关功能的代码块。
模块中包含一些组件、服务或其他代码文件,这些内容的作用域由NgModule定义。
模块可以导入其他模块导出的功能,可以导出功能供其他的NgModule使用。
根模块:AppModule。引导AppModule就可以启动应用,根模块可以包含任意深度的层次化子模块。
@NgModule元数据
NgModule的装饰器: @NgModule()
@NgModule({
declarations: [ // (可选)声明属于当前NgModule 的组件、指令、管道
AppComponent,
HerosComponent
],
imports: [ // 导入,当前模块导出时需要的其他模块
BrowserModule,
FormsModule
],
exports:[], // 能在其他模块中使用的功能
providers: [], // 本模块向全局服务中贡献的服务的创建器,这些服务能在应用的任何地方使用
bootstrap: [AppComponent] // 应用主视图,即根组件,只有根模块才应该设置该属性
})
NgModule和组件
NgModule为组件提供编译上下文环境。
- 根模块总会有根组件,引导期间创建
- 任何模块都能包含任意数量的其他组件
- 属于同一个NgModule的组件共享同一个编译上下文环境。ps:是不是理解为ClassLoader?
- 一个视图层次结构中可以使用不同的NgModule中的组件定义的视图
视图的层次结构是Angular在DOM和应用数据中检测变更、响应变更时的关键因素
import & export
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HerosComponent } from './heros/heros.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { HeroDetailComponent } from './hero-detail/hero-detail.component';
export class AppRoutingModule { }
Angular 库的名称带有 @angular前缀