背景:系统中很多字典数据都是在后台获取,通常是一些数字或者字母。我们要把他转换成用户看得懂的文字

一.列表字典数据转换(只能在页面使用)

1.创建pipe文件

dictData 为页面查询到的字典数据,传到pipe 管道里使用

import {Pipe, PipeTransform} from '@angular/core';
import {DictService} from "../components/dict-data-select/dict-data-select/dict.service";@Pipe({name: 'dictData'
})
export class DictDataPipe implements PipeTransform {transform(value: unknown, dictList: Array<any>) {return value ? this.returnIt(value, dictList).label : '';}returnIt(code: any, dictList: any) {for (const item of dictList) {if (item.value === code) {return item;}}}}

2.页面使用

dictData 为页面查询到的字典数据,传到pipe 管道里使用

 {{data.officeType | dictData:dictList}}

二.通过自定义组件实现列表和表单下拉框的转换(可在页面和表单使用)

1.自定义组件dict-data-select

可选参数:

dictKey  // 用于传到组件查询字典数据库的参数

mode // ‘list’参数代表页面使用,'form'代表表单使用

value // 字典的值

import {Component, EventEmitter, forwardRef, Input, OnChanges, OnInit, Output} from '@angular/core';
import {DictService} from "./dict.service";
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms";export const EXE_COUNTER_VALUE_ACCESSOR: any = {provide: NG_VALUE_ACCESSOR,useExisting: forwardRef(() => DictDataSelectComponent),multi: true
};@Component({selector: 'app-dict-data-select',templateUrl: './dict-data-select.component.html',styleUrls: ['./dict-data-select.component.less'],providers: [EXE_COUNTER_VALUE_ACCESSOR]
})
export class DictDataSelectComponent implements OnInit, OnChanges, ControlValueAccessor {@Output() dataChange = new EventEmitter();@Output() event = new EventEmitter();@Input() dictKey: any = {};@Input() value: any = '';@Input() mode: 'form' | 'list' | 'searchForm' = 'form';@Input() width: string = '100%';dictList: any = []// value: string = null;constructor(private dictService: DictService) {}ngOnInit() {this.getDictList();}ngOnChanges() {// this.getDictList();}getDictList() {const self = this;self.dictService.getDictList((_ary: Array<any>, _count: number) => {this.dictList = _ary;}, (_code: string, _msg: string) => {}, self.dictKey);}change(ev: any) {this.onChange(ev);const obj = this.dictList.filter((v: { value: any; }) => v.value === ev);if (obj && obj.length > 0) {this.dataChange.emit(obj[0]);}}/* ControlValueAccessor */onChange(_: any) {}writeValue(value: any) {this.value = value;}registerOnChange(fn: any) {this.onChange = fn;}registerOnTouched(fn: any) {}/* end ControlValueAccessor */}
<ng-container *ngIf="mode=='form'"><nz-select  style="width: {{width}}" [(ngModel)]="value" (ngModelChange)="change($event)"><nz-option *ngFor="let item of dictList" [nzLabel]="item.label" [nzValue]="item.value"></nz-option></nz-select>
</ng-container><ng-container *ngIf="mode=='list'"><ng-container *ngFor="let item of dictList"><span *ngIf="item.value==value">{{item.label}}</span></ng-container></ng-container>

2.在表单页面使用

3.在普通页面使用

参考文档:

Angular 管道之异步数据读取转换 - By DeathGhost

Angular 通过管道pipe,转换后台字典数据相关推荐

  1. [转]Angular2 使用管道Pipe以及自定义管道格式数据

    本文转自:https://www.pocketdigi.com/20170209/1563.html 管道(Pipe)可以根据开发者的意愿将数据格式化,还可以多个管道串联. 纯管道(Pure Pipe ...

  2. iconv 文件编码转换--知网的情感字典数据

    背景: 下载了知网的情感字典数据,打开的时候是乱码,但是英文的字典数据是可以直接看的,很奇怪. 乱码形式如下: 原因 : 不知道上传文件的人用什么编码方式,mac默认了utf-8解码方式 解决: 问了 ...

  3. php+管道+pipe管道,angular2+管道pipe

    一.什么是Pipe? 就是管道,简单来说,管道的作用就是传输.并且不同的管道具有不同的作用.(其实就是处理数据) 二.pipe用法 {{ 输入数据 | 管道 : 管道参数}}  (其中'|'是管道操作 ...

  4. Angualr设置自定义管道Pipe(类似Vue的过滤器filters)货币格式化(实现内置管道CurrencyPipe的功能)

    新建管道: ​​​​​​​ng g pipe pipes/money或​​​​​​​ng g p pipes/money pipes/money.pipe.ts,同时在父级module.ts加入 im ...

  5. linux进程间通信:无名管道 pipe

    文章目录 内核层实现 结构 通信原理 特点 使用 函数声明 使用实例 单向通信 双向通信 编程注意事项 管道中无数据时读操作会阻塞 将管道的写端句柄关闭,不会影响读端数据读取 管道中没有数据,写操作关 ...

  6. Java-NIO(九):管道 (Pipe)

    Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 代码使用示例: 1 @Test 2 publi ...

  7. 进程间的通信方式(二):管道Pipe和命令管道FIFO

    1.概述 管道是最初的Unix IPC通信,可追溯到1973年的Unix第三版.尽管对于许多操作来说很有用,但它们的根本局限于没有名字,只能由亲缘关系的进程使用.这一点随着FIFO的加入System  ...

  8. Linux内核中无名管道pipe和有名管道fifo的分析

    1.管道(pipe) 管道是进程间通信的主要手段之一.一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端.管道是一种特殊的文件,它不属于某一种 ...

  9. 机器学习(2.sklearn(Scikit-learn)库、字典数据的特征抽取)

    sklearn(全称Scikit-learn库介绍) •Python语言的机器学习工具 •Scikit-learn包括许多知名的机器学习算法的实现 •Scikit-learn文档完善,容易上手,丰富的 ...

最新文章

  1. 《深度学习:Java语言实现》一一2.6小结
  2. a标签居中 img vue_Vue中img的src属性绑定与static文件夹实例
  3. 思科网络设备及配置详解,网工入门必备指南!
  4. cgo linux arm,Golang交叉编译各个平台的二进制文件
  5. 进入正在运行状态中的Docker容器
  6. 第六十三期:放下你手里的代码,小心被抓!
  7. 【大地信】新时代GIS发展趋势与未来展望
  8. fc安卓模拟器_跨平台游戏模拟器RetroArch,一个软件畅玩FC 、MD、SFC、GBA游戏
  9. 如何绕过百度网盘客户端下载大文件
  10. Exploring Sparsity in Image Super-Resolution for Efficient Inference
  11. 计算机编程导论python程序设计答案-计算机科学与Python编程导论_学堂云答案
  12. python清洗数据 food ounces animal_Wonz 的动态 - SegmentFault 思否
  13. OpenCV图像基本操作——图像合成
  14. Android如何定制主题
  15. 申请https域名,证书和部署流程(免费SSL证书)
  16. 浅析 Google 的云计算平台
  17. nginx排查502错误
  18. 牛客多校第八场 Enigmatic Partition(DP)
  19. (Nowcoder) F.Popping Balloons
  20. GitLab CI/CD系列教程(一)

热门文章

  1. 关于tomcat运行突然变慢很多,加载特别缓慢,这个问题影响了我很久才得以解决
  2. 利用 HttpClient 实现 WI/SSO 中的 Eager Sign in
  3. 「需求广场」需求词更新明细(五)
  4. [vijos1571] 笨笨的导弹攻击
  5. oracle-01031+linux,linux – Oracle返回错误ORA-01031:权限不足
  6. 【论文阅读】Reinforcement Learning-Based Black-Box Model Inversion Attacks
  7. php什么是api,php – 什么是API令牌?
  8. 在屏幕边缘指示怪物/敌人当前所处的方位
  9. 自己总结的故障分析及我这些年修电脑的经验
  10. Android短信查询(二)——利用ContentObserver实现短信查询