我正在关注egghead.com上关于Angular 2的John Lindquist,并且在完成与他完全相同的事情后,我的结果并不相同。
这是关于17的课程。
我有一个完美的自定义过滤器:
开始-pipe.ts
import {Pipe} from '@angular/core';
@Pipe({
name: "started"
})
export class StartedPipe{
transform(value, [status]){
return value.filter((item)=> item.status === "started");
}
}
待办事项-list.ts
import {Component, Input} from '@angular/core';
import {TodoService} from "./todo-service";
import {TodoItemRenderer} from "./todo-item-renderer";
import {StartedPipe} from './started-pipe';
@Component({
selector: 'todo-list',
pipes: [StartedPipe],
directives: [TodoItemRenderer],
template: `
<div>
<ul>
<li *ngFor="let todo of todoService.todos | started : 'started'">
<todo-item-renderer
[todo]="todo"
(toggle)="todoService.toggleTodo($event)">
</todo-item-renderer>
</li>
</ul>
</div>
`
})
export class TodoList{
@Input() status;
constructor(public todoService: TodoService){}
}
但是当我想使用我的变换值的数组arg时,它不再起作用了:
开始-pipe.ts
import {Pipe} from '@angular/core';
@Pipe({
name: "started"
})
export class StartedPipe{
transform(value, [status]){
return value.filter((item)=> item.status === status);
}
}
如果您有任何想法,欢迎它!
感谢。
答案 0 :(得分:5)
您需要稍微更改语法:
transform(value, status){ // remove brackets from status
从 beta.16 开始,管道转换签名已从
更改export interface PipeTransform { transform(value: any, args: any[]): any; }
到
export interface PipeTransform { transform(value: any, ...args: any[]): any; }
另请参阅:https://github.com/angular/angular/blob/master/CHANGELOG.md#breaking-changes-1