我试图遍历一个对象。我尝试了以下方法:
管:
@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
transform(value, args:string[]) : any {
if (!value) {
return value;
}
let keys = [];
for (let key in value) {
keys.push({key: key, value: value[key]});
}
return keys;
} }
在我的HTML中:
<div *ngIf="details">
<li *ngFor=" let entry of details| keys">
{{entry.key}}, {{entry.value}}
</li>
它的工作,但它显示了我的整个对象。 我只需要对象的某些键。 所以我可以做这样的事情(这是一个带有数组的对象,如果它只是一个对象,这种方式就不起作用了):
<button ion-item *ngFor="let movie of movies?.results" (click)="goToDetails(movie.id)">
<h2>{{movie.title}}</h2>
{{movie.overview}}
</button>
答案 0 :(得分:2)
您需要实现过滤管道或将参数(所需的属性名称)传递给管道:
<li *ngFor=" let entry of details| keys:'name', 'value'">
//or
<li *ngFor=" let entry of details| keys | filter">
for (let key in value) {
if(!Array.isArray(args) || args.length === 0 || args.indexOf(key) > -1)
keys.push({key: key, value: value[key]});
}
<li *ngFor=" let entry of details| keys:'name'">
{{entry.key}}, {{entry.value}}
</li>