前端框架angular学习笔记(二)
来源:互联网 发布:2017淘宝开店成功经验 编辑:程序博客网 时间:2024/05/16 15:42
(1)管道:
通过引入Angular管道,我们可以把这种简单的“显示-值”转换器声明在HTML中。管道把数据作为输入,然后转换它,给出期望的输出。
例如:<p>The hero's birthday is {{ birthday | date }}</p>
在这个插值表达式中,我们让组件的birthday
值通过管道操作符( | )流动到 右侧的Date管道函数中。所有管道都会用这种方式工作。
angular内置管道:
Angular内置了一些管道,比如DatePipe
、UpperCasePipe
、LowerCasePipe
、CurrencyPipe
和PercentPipe
。 它们全都可以直接用在任何模板中。
自定义管道:
自定义管道首先要声明
@Pipe({name: 'optypePipe'})
然后要实现PipeTransform接口,之后完成接口里的transform()方法,先看一个简单的完整实例:import {Pipe, PipeTransform} from '@angular/core';@Pipe({name: 'optypePipe'})export class OptypePipe implements PipeTransform { transform(op_type_id: number): any { if (op_type_id === 0) { return '操作类型名称'; } if (op_type_id === 1) { return '编码'; } }}
这个管道完成了根据操作id返回具体操作类型的管道转换。
(2)依赖注入令牌:
当向注入器注册提供商时,实际上是把这个提供商和一个 DI 令牌关联起来了。 注入器维护一个内部的令牌-提供商映射表,这个映射表会在请求依赖时被引用到。 令牌就是这个映射表中的键值。
在前面的所有例子中,依赖值都是一个类实例,并且类的类型作为它自己的查找键值。 在下面的代码中,
HeroService
类型作为令牌,直接从注入器中获取HeroService
实例:heroService: HeroService;编写需要基于类的依赖注入的构造函数对我们来说是很幸运的。 只要定义一个
HeroService
类型的构造函数参数, Angular 就会知道把跟HeroService
类令牌关联的服务注入进来:constructor(heroService: HeroService)(3)路由与导航:
路由被用于页面之间的跳转以及路由传递参数。
路由配置例子:
export const reqtmpRouting = RouterModule.forChild([{ path: '', component: ReqtmpComponent, children: [ {path: '', pathMatch: 'full', redirectTo: 'index'}, {path: 'index', component: ReqtmpIndexComponent}, {path: 'reward/search/:t', component: ReqtmpBarRewardComponent}, // 搜索酬金模板 {path: 'reward/add/:t', component: ReqtmpBarRewardEditComponent}, // 新增酬金模板 {path: 'reward/edit/:id/:t', component: ReqtmpBarRewardEditComponent}, // 编辑酬金模板 {path: 'reward/art/:art_id/:t', component: ReqtmpBarRewardEditComponent}, // 查看酬金模板 {path: 'busiaya/search/:t', component: ReqtmpBarBusiayaComponent}, // 经分需求信息 {path: 'busiaya/add/:t', component: ReqtmpBarBusiayaEditComponent}, // 新增经分需求信息 {path: 'busiaya/edit/:id/:t', component: ReqtmpBarBusiayaEditComponent}, // 编辑经分需求信息 {path: 'busiaya/art/:art_id/:t', component: ReqtmpBarBusiayaEditComponent}, // 查看经分模板 {path: 'charge/search/:t', component: ReqtmpBarChargeComponent}, // 经分需求信息 {path: 'charge/add/:t', component: ReqtmpBarChargeEditComponent}, // 新增经分需求信息 {path: 'charge/edit/:id/:t', component: ReqtmpBarChargeEditComponent}, // 编辑经分需求信息 {path: 'charge/art/:art_id/:t', component: ReqtmpBarChargeEditComponent}, // 查看资费模板 {path: 'topic/search/:t', component: ReqtmpBarTopicComponent}, // 搜索模板基本信息 {path: 'comprehensive/search/:t', component: ReqtmpBarComprehensiveComponent}, // 综合需求模板 {path: 'elechanl/search/:t', component: ReqtmpBarElechanlComponent}, // 综合需求模板 {path: 'comprehensive/add/:t', component: ReqtmpBarComprehensiveEditComponent}, // 新增综合模板 {path: 'comprehensive/edit/:id/:t', component: ReqtmpBarComprehensiveEditComponent}, // 编辑综合模板 {path: 'comprehensive/art/:art_id/:t', component: ReqtmpBarComprehensiveEditComponent}, // 查看综合模板 {path: 'elechanl/add/:t', component: ReqtmpBarElechanlEditComponent}, // 新增电渠模板 {path: 'elechanl/edit/:id/:t', component: ReqtmpBarElechanlEditComponent}, // 编辑电渠模板 {path: 'elechanl/art/:art_id/:t', component: ReqtmpBarElechanlEditComponent}, // 查看电渠模板 {path: 'market/search/:t', component: ReqtmpBarMarketComponent}, // 营销类需求模板信息 {path: 'market/add/:t', component: ReqtmpBarMarketEditComponent}, // 新增营销类需求模板信息 {path: 'market/edit/:id/:t', component: ReqtmpBarMarketEditComponent}, // 编辑营销类需求模板信息 {path: 'market/art/:art_id/:t', component: ReqtmpBarMarketEditComponent}, // 查看营销模板 {path: 'simpleparam/search/:t', component: ReqtmpBarSimppleParamComponent}, // 搜索简易模板 {path: 'simpleparam/add/:t', component: ReqtmpBarSimppleParamEditComponent}, // 新增简易模板 {path: 'simpleparam/edit/:id/:t', component: ReqtmpBarSimppleParamEditComponent}, // 编辑简易模板 {path: 'template/:art_id/:art_type/:t', component: ReqtmpBarTemplateComponent}, // 总模板 {path: 'function/search/:t', component: ReqtmpBarFunctionComponent}, // 搜索功能模板 {path: 'function/add/:t', component: ReqtmpBarFunctionEditComponent}, // 新增功能模板 {path: 'function/edit/:id/:t', component: ReqtmpBarFunctionEditComponent}, // 编辑功能模板 {path: 'function/art/:art_id/:t', component: ReqtmpBarFunctionEditComponent}, // 查看功能模板 ]}]);
根据path的路径,跳转到对应的component,根据component找到对应的页面,对于路由传参,如:path: 'function/art/:art_id/:t',然后对应页面通过:this.activatedRoute.params.subscribe(param => { if (param && param.art_id) { this.getByArtId(param.art_id); }});拿到路由所传递的参数。
- 前端框架angular学习笔记(二)
- 前端框架angular学习笔记(一)
- 前端框架angular学习笔记(三)
- Angular学习笔记(二)
- angular学习笔记(二)
- 前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
- 前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
- angular学习笔记二
- 前端学习笔记(二)
- Angular.js学习笔记(二)
- angular.js学习笔记(二)
- MUI前端框架学习(二)
- 前端框架-Angular.js
- Angular.js 学习笔记 整理二
- web前端学习笔记-angular学习前必备知识
- 前端学习总结(七)Angular.js——以数据交互为核心的前端框架
- angular前端学习
- 前端学习笔记-HTML(二)
- 查看那个文件占用最多
- Jzoj4877 力场护盾(红警系列)
- gcc attribute机制
- 经常遇到的一些问题
- Caffe Layers
- 前端框架angular学习笔记(二)
- D
- 解决中文页面乱码
- 用eclipse插件执行时发生以下错误.AccessControlException: Permission denied
- Static class 与non static class的区别
- Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/ResolvableTypePr
- 从架构理解价值-我的软件世界观
- JAVA scanner类中next()方法与nextline()方法的区别
- truncate 、delete与drop区别