作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制作了一个可重用的组件,它接受某个类的数组。现在我想将一个管道传递给这个组件,它将将该数组的每个元素转换为我想要的可视化表示。 (这取决于数组对象的类)。
现在我不知道如何在模板中直接使用这个Pipe。我设法让它与一个以编程方式调用管道的额外函数一起工作:
export class SingleCategoryFilterComponent<T> implements OnInit {
@Input()
possibleFilterValues: T[];
@Input()
displayPipe: PipeTransform;
constructor() {}
ngOnInit() {}
transformValue(value: T) {
return this.displayPipe.transform(value);
}
}
<button mat-menu-item *ngFor="let value of possibleFilterValues">
{{transformValue(value)}}
</button>
<button mat-menu-item *ngFor="let value of possibleFilterValues">
{{value | displayPipe}}
</button>
最佳答案
如果您在模板中使用为您处理此问题的包装管并传入 displayPipe
怎么样?管道作为管道 transform
的参数方法。类似于下面的内容(可能需要进行某种调整以适应您的问题,但您明白了)
在模板中,
<button mat-menu-item *ngFor="let value of possibleFilterValues">
{{value | wrappingPipe:displayPipe}}
</button>
@Pipe({
name: 'wrappingPipe'
})
export class WrappingPipe implements PipeTransform {
transform(value: any, displayPipe?: PipeTransform): any {
if(value !== undefined) {
return displayPipe && displayPipe.transform ? displayPipe.transform(value) : value;
} else {
return value;
}
}
}
关于angular - 如何在 HTML 模板中使用作为@Input 传递的管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47058644/
我是一名优秀的程序员,十分优秀!