gpt4 book ai didi

angular - 将函数作为 arg 传递时调用管道 Pipe angular2

转载 作者:行者123 更新时间:2023-12-02 10:18:06 24 4
gpt4 key购买 nike

我有一个员工列表,想要使用预定义的部门过滤器进行下拉列表

我正在尝试创建一个过滤器管道并将一个函数作为参数传递,它仅在第一次渲染时起作用,但我想在每次用户更改选择时调用该管道

管道:

import { Pipe, PipeTransform, Injectable } from '@angular/core';

@Pipe({
name: 'filter'
})
@Injectable()
export class FilterPipe implements PipeTransform {

transform(value: Array<any>, f) {
return value.filter(x => f(x));
}
}

组件:

     constructor() {

this.filterFunc = this.filterByDepatment.bind(this);
}
//filter function
filterByDepatment(e) {

if (this.selectedDepartment > -1) {
return (e.Departments as Array<any>).find(x => x.Id === this.selectedDepartment);
} else {
return true;
}
}

模板:

<select [(ngModel)]="selectedDepartment">
<option value="-1">All</option>
<option value="{{d.Id}}" *ngFor="let d of departments">{{d.Name}}</option>
</select>
<div class="card" *ngFor="let emp of (employees | filter: filterFunc)">

最佳答案

我认为最简单的方法是传递选定的值

 <div class="card"  *ngFor="let emp of (employees | filter: filterFunc:selectedDepartment)">

这样,每次 selectedDepartment 更改时都应该执行管道。

关于angular - 将函数作为 arg 传递时调用管道 Pipe angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722483/

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