自定义管道 管道(过滤器)为过滤数据显示下列list数据

  • pip.ts 文件
import { Pipe, PipeTransform } from '@angular/core';
import { TableType } from './add-student.service'; @Pipe({
name: 'studyProjectType'
})
export class StudyProjectTypePipe implements PipeTransform {
transform( allstudyProjects: any[], typeParams: any): any {
// console.log(typeParams);
return allstudyProjects.filter(type => typeParams.indexOf(type.type) !== -1);
}
}

transform 方法是管道的基本要素。 PipeTransform接口中定义了它. 当每个输入值被传给 transform 方法时,还会带上另一个参数

allstudyProjects 是输入值 ,也就是html 页面中 | 前面的studyProjectList是管道名 typeParams是管道名后的参数 传进管道中

以上这两个为形参,名字自定义,建议命名规范,尤其是写分享管道 . transform 函数里return 是输入数据过滤filter,里面是一个函数

这里的思路是 对比 请求下的数据 studyProjectList 每个列表的type属性 对比下面typeParams, 结果为true 就通过过滤显示

本地数据来源

public types: TabType[] = [
{
name: '课程',
id: 'courseDate',
tags: ['在线课', '线上课', '直播课', '线下课'],
},
{
name: '考试',
id: 'examDate',
tags: ['试卷'],
},
{
name: '作业',
id: 'taskDate',
tags: ['作业'],
},
{
name: '问卷',
id: 'questionnaireDate',
tags: ['问卷'],
},
];
private typeParams: string[] = this.types[0].tags; //初始值
  • html 文件
  <div class="table-responsive">
<!-- {{ studyProjectList | studyProjectType }} -->
<app-project-assign-list [studyProjectList] = "studyProjectList | studyProjectType: typeParams "></app-project-assign-list>
</div>

app-project-assign-list 为列表样式组件

  //click 点击事件 改变types[i]
switchType (i) {
this.typeParams = this.types[i].tags;
}

线上数据来源

 /*
* 数据来源
* addStudentService 服务提供 getStudyProject方法
*/
dataSource: Observable<any>;
// studyProjectList: Array<any> = [];
studyProjectList: TableType[] = [];
constructor(
private addStudentService: AddStudentService,
) {
} ngOnInit() {
this.dataSource = this.addStudentService.getStudyProject();
this.dataSource.subscribe(
(data) => {
console.log(data);
this.studyProjectList = data.students;
}
);
}

ngular6开发不完全笔记(二)-- 管道的更多相关文章

  1. 移动开发基础-学习笔记二-字体图标、less、bootstrap入门

    1.字体图标 1.字体图标都是用svg图片 1.svg图片不失真 2.svg图标由设计师提供 3.为了减少网络请求,会把svg图标转换成字体图标,放到字体文件中,通过字体库的方式使用 2.制作步骤 1 ...

  2. iOS开发ReactiveCocoa学习笔记(二)

    RAC 中常见的宏: 使用宏定义要单独导入 #import <RACEXTScope.h> 一. RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某 ...

  3. Google Android SDK开发范例大全笔记 二

    网络设备管理相关相关 代码地址 1 WifiManager LocationManager分别控制 wifi及GPS WifiManager 判断网络状态 ,LocationManager判断定位状态 ...

  4. ngular6开发不完全笔记(三)-- 报错指南

    router Uncaught Error: Template parse errors: 'router-outlet' is not a known element: If 'router-out ...

  5. Android开发艺术探索笔记——View(二)

    Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...

  6. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...

  7. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  8. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  9. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

随机推荐

  1. Eclipse 真机调试检测不到手机解决方案

    想用Eclipse真机调试,但是死活检测不到手机. 手机已经打开了usb调试模式. 开始用的华为Mate9,后面试了下小米,都不行. 在网上搜了一堆,什么安全驱动.adb占用.删除360手机助手.修改 ...

  2. NAS设备是什么

    1.NAS含义: NAS(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机 ...

  3. MUI极简的JS函数

    模块:utils http://dev.dcloud.net.cn/mui/util/#event mui.init(); mui框架将很多功能配置都集中在mui.init方法中,要使用某项功能,只需 ...

  4. 新版jquery的ajax调用 , jquery1.5以上

    原文出处:http://api.jquery.com/jQuery.ajax/,该链接页面底部有代码展示 示例1: $.ajax({ method: "POST", url: &q ...

  5. jquery操作select标签change事件

    $('#update_supply_id').on('change',function(){//判断是否选取prompt属性,无返回值: if($(this).val()){ var selectTe ...

  6. Jenkins之构建执行脚本权限问题

    Jenkins需要执行的脚本不在本机需要ssh免密码登陆到远程主机执行 Jenkins部署机ip地址为192.168.56.12 需要远程执行脚本的主机为192.168.56.11 设置好密钥可以使用 ...

  7. CH1402 后缀数组【Hash】【字符串】【二分】

    1402 后缀数组 0x10「基本数据结构」例题 描述 后缀数组 (SA) 是一种重要的数据结构,通常使用倍增或者DC3算法实现,这超出了我们的讨论范围.在本题中,我们希望使用快排.Hash与二分实现 ...

  8. UEM用户行为了如指掌!

    “千呼万唤始出来”,万众期待的UEM正式与宝宝们见面啦~~~ 今天很多人来问小编,Web咋不见了,表急,Web并没有消失,而是重磅升级为UEM啦!!! 什么是UEM呢?UEM全称User Experi ...

  9. mysql备份的4种方式

    mysql备份的4种方式 转载自:https://www.cnblogs.com/SQL888/p/5751631.html 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 ...

  10. 模仿Masonary写一个计算器

    1.CaculatorMaker @interface CaculatorMaker : NSObject @property(nonatomic,assign)int result; -(Cacul ...