2016-08-20 82 views
2

我想在角度2中創建我的第一個自定義管道,但似乎我在代碼中缺少某些東西阻止我獲取所需的輸出:我想僅顯示類型相同的名稱以「T」或「A」:Angular2中的管道

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

@Pipe({name:"search"}) 
export class search{ 
    transform (value){ 
    x = []; 
    x = items.filter(item => item.Type = 'T'); 
    x = items.filter(item => item.Type = 'A'); 
    return x; 
    } 
} 

@Component({ 
selector: 'my-app', 
Pipes: [search], 
template: ` 
    <h1>My First Angular 2 App</h1> 
    <br> 
    <li *ngFor = "#c of todos.Name">{{c | search}}</li> 
` 
}) 
export class AppComponent { 

todos = [ 
    {"Name":"Sleep","Type":"T"}, 
    {"Name":"Eat","Type":"E"}, 
    {"Name":"Work","Type":"T"}, 
    {"Name":"Jump","Type":"A"} 
]; 

} 

回答

0

你將有你的Array#filter功能,像這樣

@Pipe({name:"search"}) 
export class search implements PipeTransform{ 
    transform (value){ 
    return items.filter(item => item.Type == 'T' || item.Type == 'A'); 
    } 
} 

只要items是一個數組的Array#filter總是會返回一個數組結合起來,所以沒有需要將x設置爲一個空數組。

你現在這樣做的方式。
1.設置X爲空數組
2 x是所有類型T
3 x的項目是所有類型的A

因此,X將始終有項中的項有型的A(如果有沒有或爲空)

+0

:( – Maryam

2

你有你的HTML模板變成像下面應該pipetodos得到應用上ngFor

template: `<h1>My First Angular 2 App</h1> 
    <li *ngFor = "let c of todos | search"> 
    {{c.Name}} 
    </li>` 
第一件事

,然後改變你的Pipe下面像@eltonkamami已經建議

@Pipe({name:"search"}) 
export class search implements PipeTransform{ 
    transform (items){ 
     return items.filter(item => item.Type == 'T' || item.Type == 'A'); 
    } 
} 

+0

我依然沒有得到任何輸出的名稱不顯示在HTML頁面中,你能告訴我什麼是導入管道,如果它是獨立的文件的正確方法? – Maryam

+0

你是否檢查過我的plunkr?你在使用NgModule嗎? –