2017-05-06 48 views
0

我管的是:保存過濾從管道過濾數據Angular2

@Pipe({ 
    name: "dataFilter" 
}) 
export class DataFilterPipe implements PipeTransform { 

    transform(array: any[], query: string): any { 
     if (query) { 
      return _.filter(array, row=>row.name.indexOf(query) > -1); 
     } 

     return array; 
    } 
} 

我的HTML文件:

<table class="table table-striped" [mfData]="listdata | dataFilter : filterQuery " #mf="mfDataTable" 
        [mfRowsOnPage]="rowsOnPage" [(mfSortBy)]="sortBy" [(mfSortOrder)]="sortOrder"> 

我使用angular2-數據表。

我正在使用此管道過濾數據並將其顯示在數據表中。 我想將過濾的數據保存在一個變量中,以便我可以在我的應用程序的其他地方使用它。

+0

**管道對模板中顯示的值進行轉換** - 是角度管道的定義。你爲什麼要保存它? – Aravind

+0

@Aravind我有一個數據表中的位置列表。如果用戶過濾列表,我只想在谷歌地圖上使用標記來查看這些過濾的位置。 – mistletoe

+0

你應該允許用戶'從列表中選擇'這是你應該保存在DB – Aravind

回答

0

你的模塊中提供的管道:

@NgModule({ 
    ... 
    providers: [DataFilterPipe] 
}) 
export class MyModule { 
    ... 
} 

然後注入並在組件中使用它:

export class MyComponent implements OnInit { 

    public filtered; 

    constructor(private dataFilterPipe: DataFilterPipe) { 
    } 

    ngOnInit() { 
     const unfiltered = ...; 
     const filterQuery = ...; 
     this.filtered = this.dataFilterPipe.transform(unfiltered, filterQuery); 
    } 
} 

你可以現在你的數據表中直接綁定到filtered財產,以避免兩次過濾:

<table [mfData]="filtered" ...> 

雖然現在我想知道你是否需要聲明根本就不用管了。

+0

非常感謝!我想知道爲什麼我必須在構造函數中使用它? – mistletoe

+0

您不必在構造函數中使用它。看我的編輯。 –