2017-05-06 49 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

您不必在构造函数中使用它。看我的编辑。 –