我有一个类似 Trello 的网络应用程序。带有Task
可以在状态框中拖放的 s(待办事项、正在处理和已完成)。我使用ng2-dragula来实现拖放功能,并希望实现一种使用Angular 2
管道过滤我的任务的方法。
所以我做了,首先定义我的管道:
@Pipe({
name: 'taskFilter',
pure: false
})
export class TaskFilterPipe implements PipeTransform {
transform(items: Task[], filter: Task): Task[] {
if (!items || !filter) {
return items;
}
// pipes items array, items which match and return true will be kept, false will be filtered out
return items.filter((item: Task) => this.applyFilter(item, filter));
}
applyFilter(task: Task, filter: Task): boolean {
for (const field in filter) {
if (filter[field]) {
if (typeof filter[field] === 'string') {
if (task[field].toLowerCase().indexOf(filter[field].toLowerCase()) === -1) {
return false;
}
}
}
}
return true;
}
}
并将其添加到我的*ngFor
:
<!-- For every different status we have, display a card with its tasks -->
<md-grid-tile *ngFor="let istatus of status">
<!-- Display every task in our array and pipe in the filter -->
<div *ngFor="let task of tasks | taskFilter:projectService.filteredTask">
<!-- Check if said task has the right status and display it -->
<md-card class="task-card" *ngIf="task.status == istatus" (click)="openDetails(task)">
{{task.title}}
</md-card>
</div>
</md-grid-tile>
它有效,耶!但是当我拖放任何任务时,它就会消失,再也找不到了。
似乎以任何方式更改任务的状态都会使其消失,这与我的管道有什么关系?
有没有办法同时使用 Dragula 和 Angular 2 管道?