- 管道:pipe 。在angular中处理组件模板的数据格式。
- 管道操作符 | ,连接模板表达式中左边输入数据和右边的管道。
例:这里使用了内置管道 date 对日期的显示做了美化
<P>my birthday is {{birthday}}P>
<p>my birthday is {{ birthday | date }}p>
birthday = new Date(1993,1,1);
<P>my birthday is {{birthday | date:"y-MM-dd EEEE"}}P>
<P>my birthday is {{birthday | date:"y/MM/dd EEEE"}}P>
birthday = new Date(1993,1,1);
一个模板表达式中可以连续使用多个管道进行不同的处理。
<P>my birthday is {{birthday | pipeName1 | pipeName2 | pipeName3}}P>
模板表达式的值“birthday”,通过管道pipeName1处理后在传递给pipeName2处理,一直到最后一个管道处理完毕,就输出链式管道处理的最终结果。
@Pipe({
name: 'test-pipe',
pure: false
})
内置管道列举
序号 | 管道名 | 类型 | 说明 |
---|---|---|---|
1 | Date | 纯管道 | 日期管道,格式化日期 |
2 | Json | 非纯管道 | 将输入数据对象经过JSON.stringify()方法转换后输出对象字符串 |
3 | UpperCase | 纯管道 | 将文本所有小写字母转成大写字母 |
4 | LowerCase | 纯管道 | 将文本所有大写字母转成小写字母 |
5 | Decimal | 纯管道 | 数值处理 |
6 | Currency | 纯管道 | 数值转成货币格式 |
7 | Percent | 纯管道 | 数值转成百分比格式 |
8 | Slice | 非纯管道 | 数组或字符串裁剪 |
需求:
举例:
- 在页面上使用指令限制最多显示5个字,多余的截断并显示省略号。
定义管道:clipString
@Pipe({
name: 'clipString'
})
export class ClipStringPipe implements PipeTransform {
transform(value: string, limit: number): any {
if (!value) return null;
if (value.length > limit) {
return value.substr(0, limit) + "...";
}
}
}
组件模板中的应用
<p>{{'今天是星期六呢' | clipString:6}}p>
需要在declarations中声明
@NgModule({
imports: [
CommonModule
],
declarations: [
ClipStringPipe
],
exports: [SonComponent]
})
export class SonModule { }