本章中我们站在全局的角度上对Angular的组成、模块间的配合做了系统地学习,同时又学习了多个Angular涉及的知识点。
1. 我们掌握了Angular中的可见性:组件、指令、过滤器默认为私有;而服务默认为公有。
2. 知晓了一个Angular模块是由组件、指令、过滤器及服务四大部分构成。
3. 可见性为公有的,可以被其它的模块引用使用;可见性为私有的,不可被其它模块引用使用。
4. 模块A引用模块B时,将模块B的公有元素(组件、指令、过滤器、服务)转换了自己模块的私有。Angular以这种方式将引用限制在本模块内,避免一个多模块项目在引用方面出现混乱而变得不可控。
5. 如果一个验证器并不需要后台支持,则应该定义为同步验证器。
6. 如果一个验证器需要后台支持,则必须定义为异步验证器。
7. 在异步验证器中,往往需要注入第三方服务,所以无法像同步验证器一样直接将某个方法声明为`static`,而是采用在方法回返回一个验证方法的方式。这是一种新的思想,需要我们在理解的基础上日后勤加练习。
8. 指令的类型有两种:一个是属性型指令,另一种是结构型指令。属性型指令以属性的形式应用到宿主元素上,在属性型指令中我们可以轻构的获取到宿主元素,进而对宿主元素进行变更,我们使用它完成了还不错的`loading`指令;结构型指令用于改变元素的结构,比如`*if`使用是一个内置的结构型指令,由于时间、篇幅、难度限制,在教程中我们不进行介绍。
9. 单元测试是保障项目质量的重要手段,若想规避BUG满天飞的尴尬情况,则必然要使用单元测试。本章中我们通过解决单元测试中显示的错误,了解了单元测试中个别服务是单例的,在整个生命周期中仅被初始化一次。其实单例模式是节约资源的重要手段,以后我们将越来越多的接触到这种模式。
10. 在前期成功的引用bootstrap以后,本单中我们又成功的引用了一个第三方对话框。在引入的过程中我们学习到了结合官方文档引用第三方库的另一种方法,相较于原有更改`angular.json`的方式,这种方式更加简单也更直观。相较于原生的对话框,第三方对话框则显得非常的友好。其实不仅如此:原生的对话框会在弹出对话框时,暂停应用的执行,而第三方对话框往往不会。
11. 本章还以批量删除为例,展示了使用面向对象思想前后的不同,进一步的感受到了面向对象的魅力所在。
12. 在引用可订阅的路由后,我们还在单元测试中使用`provider`手动实现了相关服务的提供者。同时我们还测试了多模块同时提供某一服务器,它们之间的优先级。
学习上并没有捷径,我们想做的是打造一条学习梯度不太陡的学习路线,使大家在学习过程中每天都能够进步一点点。如果你感觉只是看懂了,那么则应该尝试找个小的系统练练手,如果手上没有这样的系统。那么也可以在当前教程的基础上加入课程管理:
在课程管理中,可以为每个班的学习集体排课,也可以由学生自主选择课程。老师登录系统后可以查看自己的课表、学生也可以尝看自己的课程。
完成课程管理后,如果你还是在校的学生,则强烈推荐你继续学习一门后台的框架。在当下流行的后台框架中,Spring Boot无疑是那颗最璀璨的星。
- 序言
- 第一章 Hello World
- 1.1 环境安装
- 1.2 Hello Angular
- 1.3 Hello World!
- 第二章 教师管理
- 2.1 教师列表
- 2.1.1 初始化原型
- 2.1.2 组件生命周期之初始化
- 2.1.3 ngFor
- 2.1.4 ngIf、ngTemplate
- 2.1.5 引用 Bootstrap
- 2.2 请求后台数据
- 2.2.1 HttpClient
- 2.2.2 请求数据
- 2.2.3 模块与依赖注入
- 2.2.4 异步与回调函数
- 2.2.5 集成测试
- 2.2.6 本章小节
- 2.3 新增教师
- 2.3.1 组件初始化
- 2.3.2 [(ngModel)]
- 2.3.3 对接后台
- 2.3.4 路由
- 2.4 编辑教师
- 2.4.1 组件初始化
- 2.4.2 获取路由参数
- 2.4.3 插值与模板表达式
- 2.4.4 初识泛型
- 2.4.5 更新教师
- 2.4.6 测试中的路由
- 2.5 删除教师
- 2.6 收尾工作
- 2.6.1 RouterLink
- 2.6.2 fontawesome图标库
- 2.6.3 firefox
- 2.7 总结
- 第三章 用户登录
- 3.1 初识单元测试
- 3.2 http概述
- 3.3 Basic access authentication
- 3.4 着陆组件
- 3.5 @Output
- 3.6 TypeScript 类
- 3.7 浏览器缓存
- 3.8 总结
- 第四章 个人中心
- 4.1 原型
- 4.2 管道
- 4.3 对接后台
- 4.4 x-auth-token认证
- 4.5 拦截器
- 4.6 小结
- 第五章 系统菜单
- 5.1 延迟及测试
- 5.2 手动创建组件
- 5.3 隐藏测试信息
- 5.4 规划路由
- 5.5 定义菜单
- 5.6 注销
- 5.7 小结
- 第六章 班级管理
- 6.1 新增班级
- 6.1.1 组件初始化
- 6.1.2 MockApi 新建班级
- 6.1.3 ApiInterceptor
- 6.1.4 数据验证
- 6.1.5 教师选择列表
- 6.1.6 MockApi 教师列表
- 6.1.7 代码重构
- 6.1.8 小结
- 6.2 教师列表组件
- 6.2.1 初始化
- 6.2.2 响应式表单
- 6.2.3 getTestScheduler()
- 6.2.4 应用组件
- 6.2.5 小结
- 6.3 班级列表
- 6.3.1 原型设计
- 6.3.2 初始化分页
- 6.3.3 MockApi
- 6.3.4 静态分页
- 6.3.5 动态分页
- 6.3.6 @Input()
- 6.4 编辑班级
- 6.4.1 测试模块
- 6.4.2 响应式表单验证
- 6.4.3 @Input()
- 6.4.4 FormGroup
- 6.4.5 自定义FormControl
- 6.4.6 代码重构
- 6.4.7 小结
- 6.5 删除班级
- 6.6 集成测试
- 6.6.1 惰性加载
- 6.6.2 API拦截器
- 6.6.3 路由与跳转
- 6.6.4 ngStyle
- 6.7 初识Service
- 6.7.1 catchError
- 6.7.2 单例服务
- 6.7.3 单元测试
- 6.8 小结
- 第七章 学生管理
- 7.1 班级列表组件
- 7.2 新增学生
- 7.2.1 exports
- 7.2.2 自定义验证器
- 7.2.3 异步验证器
- 7.2.4 再识DI
- 7.2.5 属性型指令
- 7.2.6 完成功能
- 7.2.7 小结
- 7.3 单元测试进阶
- 7.4 学生列表
- 7.4.1 JSON对象与对象
- 7.4.2 单元测试
- 7.4.3 分页模块
- 7.4.4 子组件测试
- 7.4.5 重构分页
- 7.5 删除学生
- 7.5.1 第三方dialog
- 7.5.2 批量删除
- 7.5.3 面向对象
- 7.6 集成测试
- 7.7 编辑学生
- 7.7.1 初始化
- 7.7.2 自定义provider
- 7.7.3 更新学生
- 7.7.4 集成测试
- 7.7.5 可订阅的路由参数
- 7.7.6 小结
- 7.8 总结
- 第八章 其它
- 8.1 打包构建
- 8.2 发布部署
- 第九章 总结