Angular 是一个用html 和typescript 构建
客户端应用的平台与框架
。
它将核心功能和可选功能作为一组TypeScript 库进行实现,你可以把它们导入到你的应用中。
1. 模块Module
- Angular 应用的基本构造块是
NgModule
, 它为组件提供了编译的上下文环境。 - Angular 应用就是由一组NgModule定义的。 NgModule 可以将其组件和一组相关代码(如服务)关联起来,形成功能单元。
- 一个Angular应用至少有一个用于启动的
根模块(root module)
, 根模块通常命名为AppModule
,并位于一个名叫 app.module.ts 的文件中。还会有很多特性模块(feature module)
- NgModule 是由@NgModule() 装饰器定义的类。
- NgModules 用于配置注入器和编译器(the injector and the compiler),并帮你把那些相关的东西组织在一起。
@NgModule()
装饰器是一个函数,参数是一个元数据对象,元数据对象的属性用于描述这个模块。其中最重要的属性如下:
declarations
(可声明对象表) ——属于本 NgModule 的组件、指令、管道。exports
(导出表) —— 用于其它模块的组件模板中使用的声明对象的子集(the subset of declarations)。imports
(导入表) —— 其他模块,本NgModule声明的组件需要使用它们的导出类。providers
—— 本模块向全局服务中贡献的那些服务的创建器。 这些服务能被本应用中的任何部分使用。(你也可以在组件级别指定服务提供商,这通常是首选方式。)bootstrap
—— 应用的主视图,称为根组件。它是应用中所有其它视图的宿主。只有根模块才应该设置这个bootstrap
属性。
@NgModule
的参数是一个元数据对象,用于描述如何编译组件的模板,以及如何在运行时创建注入器。 它会标出该模块自己的组件、指令和管道(declarations),通过exports
属性公开其中的一部分,以便外部组件使用它们。NgModule
还能把一些服务提供商添加到应用的依赖注入器中(provider)。
2.常用模块NgModules
NgModule | Import it from | Why you use it |
---|---|---|
BrowserModule | @angular/platform-browser | 当你想要在浏览器中运行app 时 |
CommonModule | @angular/common | 当你想要使用NgIf 和NgFor时 |
FormsModule | @angular/forms | 当要构建模板驱动表单时 |
ReactiveFormsModule | @angular/forms | 当要构建响应式表单时 |
RouterModule | @angular/router | 当要使用路由功能,并且你要用到RouterLink, forRoot() 和.forChild()时 |
HttpClientModule | @angular/common/http | 当要和服务器对话时 |