angular学习总结六——管道的用法

管道的写法

可用使用 ng g s formatDate生成一个formatDate的类

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
    name: 'formatDate'
})
export class FormatDatePipe implements PipeTransform {

    transform(timestamp: number, fmt = 'yyyy-MM-dd hh:mm') {
        if( timestamp <999999999){
            timestamp*=1000;
        }
        let date: any = new Date(timestamp);
        let o = {
            'M+': date.getMonth() + 1, //月份 
            'd+': date.getDate(), //日 
            'h+': date.getHours(), //小时 
            'm+': date.getMinutes(), //分 
            's+': date.getSeconds(), //秒 
            'q+': Math.floor((date.getMonth() + 3) / 3), //季度 
            'S': date.getMilliseconds() //毫秒 
        };
        if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
        for (let k in o)
            if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
        return fmt;
    }

}

其中name是管道的名称,模板中调用管道相当于调用的是FormatDatePipe的transform方法
管道很组件一样需要在module中declear才可以使用,写常用的管道会出现一个十分蛋疼的问题,在上一层的module中declear了子module显示的却是未声明,但是去子module声明报错显示的是声明了两次,简直抓狂!解决办法,写share.module在里面declares,并且exports导出,然后在需要使用的module中import即可

管道在模板中的使用

<span>{{time.time | formatDate:'MM月dd日'}}</span>

许多写博客的只写了一个参数的情况,这就比较蛋疼了
time.time是component中的变量,formatDate是管道的name,time.time相当于传入管道transform方法中的第一个参数,formatDate:”后面的参数是传入的第二参数,还有多就,号分割

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值