Angular - 将管道作为变量传递
Angular - pass pipe as variable
如何存储和使用来自变量的管道信息?
我已经搜索了很多,但找不到解决方案。
我想要实现的是将任何有效的管道信息作为变量(小数、百分比、日期、自定义等)传递。下面是一个简单的例子:
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>
预期的输出是格式化为百分比的值,但我得到的只是模板解析错误:
错误错误:未捕获(承诺):错误:模板解析错误:解析器错误:意外的标记“.”
您可以创建一个自定义管道,将另一个管道作为参数并将其应用于给定的值。
这是@balu 在 中创建的动态管道示例。有关详细信息,请参阅 link。
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);
}
}
}
如何存储和使用来自变量的管道信息?
我已经搜索了很多,但找不到解决方案。
我想要实现的是将任何有效的管道信息作为变量(小数、百分比、日期、自定义等)传递。下面是一个简单的例子:
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>
预期的输出是格式化为百分比的值,但我得到的只是模板解析错误:
错误错误:未捕获(承诺):错误:模板解析错误:解析器错误:意外的标记“.”
您可以创建一个自定义管道,将另一个管道作为参数并将其应用于给定的值。
这是@balu 在
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);
}
}
}