以角度4获取数组内的特定项

时间:2018-01-06 14:33:36

标签: javascript angularjs

在Angular视图中,我定义了一个变量data,如下所示:

[{"name":"science", count: 3},
 {"name":"action", count: 1},
 {"name":"thriller", count: 1},
 {"name":"article",  count: 1},
]

" 所以在html文件中我想得到名称"科学"或"文章"

我试过这样:

 <span ng-repeat="item in data| filter: {name: "science"}"> 
    {{ item.count }} 

 </span>

但这没什么,我猜是因为过滤器。我怎样才能做到这一点?任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:-1)

首先,您要使用AngularJS(1.x)语法,使用Angular(2+),您应该使用ngFor自定义管道进行过滤。

 <span> <tr *ngFor="item in data  | sciencefilter:'science'"> {{ item.count }} </span>

,您的过滤器应为

@Pipe({
    name: 'sciencefilter'
})
@Injectable()
export class ScienceFilterPipe implements PipeTransform {
    transform(items: any[], type: string): any {
        return items.filter(item => item.id.indexOf(type) !== -1);
    }
}

不使用过滤器

count :number;

然后,

this.count = this.items.filter(t=>t.name ==='science');

和组件

 <span> 
    {{ count.length }}
 </span>

答案 1 :(得分:-1)

你可以像这样使用管道 -

import {Injectable, Pipe, PipeTransform} from 'angular2/core';

@Pipe({
    name: 'myfilter'
})
@Injectable()
export class MyFilterPipe implements PipeTransform {
    transform(items: any[], args: any[]): any {
        return items.filter(item => item.id.indexOf(args[0]) !== -1);
    }
}

模板看起来像这样 -

*ngFor="let element of (elements | myfilter:'123')"