gpt4 book ai didi

Angular 2 : Set and remove custom pipes?

转载 作者:太空狗 更新时间:2023-10-29 17:52:35 25 4
gpt4 key购买 nike

我已经创建了三个自定义管道来从服务器(ASC、DESC 和默认)订购数据,它们工作得很好,我希望这三个管道是否激活取决于用户的交互。

问题是,可以用一个变量来改变自定义管道吗?

这是我的代码...

<label *ngFor="let user of users | {{pipeOrderType}}:'name'">{{user.id}}{{user.name}}, </label>

最佳答案

无法动态分配不同的管道。您可以根据参数创建行为不同的管道

@Pipe({
name: 'dynamicPipe'
})
class DynamicPipe implements PipeTransform {
transform(value, pipe) {
if(!value || !pipe) {
return null;
}
return pipe.transform(value);
}
}

管道可以用在什么地方

<label *ngFor="let user of users | dynamicPipe:pipe">{{user.id}}{{user.name}}, </label>

而这里的 pipe 是对管道类的实际实例的引用,而不是字符串。您可以像这样将管道注入(inject)组件

class MyComponent {
constructor(private pipe1:Pipe1, private pipe2:Pipe2) {}

clickHandler() {
if(xxx) {
this.pipe = this.pipe1;
} else {
this.pipe = this.pipe2
}
}
}

您还可以将管道注入(inject) dynamicPipe

@Pipe({
name: 'dynamicPipe'
})
class DynamicPipe implements PipeTransform {
constructor(private pipe1:Pipe1, private pipe2:Pipe2) {}

transform(value, pipe) {
if(!value || !pipe) {
return null;
}
if(pipe == 'pipe1') {
return pipe1.transform(value);
}
if(pipe == 'pipe2') {
return pipe2.transform(value);
}
}
}

然后将其与管道名称一起使用

<label *ngFor="let user of users | dynamicPipe:pipe">{{user.id}}{{user.name}}, </label>

其中 pipe'pipe1''pipe2'

关于 Angular 2 : Set and remove custom pipes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com