【发布时间】:2020-11-01 20:47:07
【问题描述】:
我有多个管道,并且想根据条件向我的输入元素添加一个或多个管道。
必须检查输入元素(this)是否具有某种样式(this.styles),并根据该样式在输入元素中添加管道。
因此,如果样式为ReverseString,则必须将管道reverseStr 添加到输入元素中。
我创建了管道,当我添加它时,管道可以正常工作(参见reverseStr):
<input type="text"
#formItem
[name]="id"
[id]="id"
class="form-control"
[ngModel]="value | reverseStr"
(blur)="change.emit(formItem.value)"/>
但是如何在 Angular 中有条件地添加管道?
我知道在 HTML 中添加如下内容是可能的:
[ngModel]="styles.includes('ReverseString') ? (value | SomePipe) : (value | pipe2)"
但这不是我认为最优雅的方式,如果我有多个输入组件,我每次都需要更改它
我创建了一个类似的函数:
addPipe() {
const mapping: any = {
ReverseString: 'reverseStr',
LowerCase: 'lowerCase',
UpperCase: 'upperCase',
};
this.styles.forEach((style : any) => {
const pipes = mapping[style];
if (pipes) {
// How can I add the pipes now dynamically?
}
});
}
但我不知道如何将管道动态添加到输入字段。
如何在 Angular 中有条件地动态添加管道?
【问题讨论】:
标签: angular conditional-statements angular-pipe