无法在我的管道中的对象数组上使用 .filter() 或 for
2016-08-16
548
我正在创建的自定义管道存在问题。我的 Persos 是一个 Perso 对象数组,似乎我无法应用 .filer(),因此我尝试了一个简单的 for 循环(在这样的 Persos var 上的 *ngFor 中运行良好),但也没有成功。我认为我在这里遗漏了一些关于在 Typescript 中处理对象的非常基本的知识。
以下是带有一些测试和注释的管道代码:
import { Pipe, PipeTransform } from '@angular/core';
import { Perso } from './perso';
@Pipe({ name: 'startsWithPersoPipe' })
export class StartsWithPersoPipe implements PipeTransform {
transform(Persos: Perso[]){
// this for makes it all bug, when I comment it my pipe works fine
for( let perso of Persos){
}
// this for does not make it crash but does not behave at all like I want
for( let perso in Persos){
console.log(perso); // just prints 0, 1, 2, 3 etc up to 109 ( i have 110 elements in the Perso[] var I use for test)
console.debug(perso); // same behavior as console.log(perso)
console.log(perso.nom); // undefined
}
console.debug(Persos); // Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, 100 more… ]
// when I click on on of the Object I get one of my objects with correct values in nom, description and type : it's all fine !
return Persos;
}
}
以下是 perso.ts
export class Perso {
nom: string;
type: string;
description: string;
}
任何帮助、提示或有用资源链接可以帮助我解决这个问题,我将不胜感激。
1个回答
这应该可以做到:
@Pipe({ name: 'startsWithPersoPipe' })
export class StartsWithPersoPipe implements PipeTransform {
transform(Persos: Perso[]){
if(Persos == null) {
return null;
}
return persos.filter(p => p.nom && p.nom.startsWith('super'));
}
}
Günter Zöchbauer
2016-08-16