如何存储和使用变量中的管道信息?
我已经搜索了很多,但找不到解决方案。
我要实现的目标是将任何有效的管道信息作为变量(小数,百分比,日期,自定义等)传递。遵循一个简单的示例:
parent.component.ts:
columnsDef = {
value: 0.35,
pipeInfo: 'percent:"0.2-2":"pt-BR"'
};
parent.component html:
<app-display-component [columnsDef]="columnsDef"></app-display-component>
app-display.component html:
<h1> {{ columnsDef.value | columnsDef.pipeInfo }}</h1>
期望的输出是格式化为百分比的值,但是我得到的只是一个模板解析错误:
错误错误:未捕获(承诺):错误:模板解析错误:分析器错误:意外的令牌'。'
答案 0 :(得分:3)
您可以创建一个自定义管道,该管道将另一个管道作为参数,并将其应用于为其赋予的值。
这是@balu在this answer中创建的动态管道的示例。有关更多信息,请参见链接。
import {
Injector,
Pipe,
PipeTransform
} from '@angular/core';
@Pipe({
name: 'dynamicPipe'
})
export class DynamicPipe implements PipeTransform {
public constructor(private injector: Injector) {
}
transform(value: any, pipeToken: any, pipeArgs: any[]): any {
if (!pipeToken) {
return value;
}
else {
let pipe = this.injector.get(pipeToken);
return pipe.transform(value, ...pipeArgs);
}
}
}