【问题标题】:Angular 2 Custom PipeAngular 2 自定义管道
【发布时间】:2016-05-11 19:59:49
【问题描述】:

我在 egghead.com 上关注 John Lindquist 关于 Angular 2 的教程,在做了与他完全相同的事情之后,我没有得到相同的结果。

关于课程 17。

我有一个完美的自定义过滤器:

started-pipe.ts

import {Pipe} from '@angular/core';

@Pipe({
    name: "started"
})

export class StartedPipe{
    transform(value, [status]){
        return value.filter((item)=> item.status === "started");
    }
}

待办事项列表.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 时,它不再起作用了:

started-pipe.ts

import {Pipe} from '@angular/core';

@Pipe({
    name: "started"
})

export class StartedPipe{
    transform(value, [status]){
        return value.filter((item)=> item.status === status);
    }
}

如果你有想法,欢迎!

谢谢。

【问题讨论】:

    标签: angular


    【解决方案1】:

    你需要稍微改变一下语法:

     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

    【讨论】:

    • 嘿伙计:) 一个问题:你确定这仍然是这样做的方法吗?看来我不能再在组件上拥有管道属性了。
    • @johnnyfittizio 您应该在模块的declarations 数组中声明您的管道
    • 但是你的意思是 app.module.ts 的声明属性吗?
    • @johnnyfittizio 完全正确
    • 但如果我不想让它全球化。我可以在组件中导入它吗?
    猜你喜欢
    • 2016-10-02
    • 2017-10-11
    • 2023-04-03
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多