2016-08-16 45 views
1

内置管道在我的组件中正常工作,但不在我的自定义管道中。 除此之外,我的管道工作得很好。自从我导入Pipe后,我看不出有什么问题。在我的自定义管道中使用内置管道时出错

这里是与误差修改代码:

import { Pipe, PipeTransform } from '@angular/core'; 
import { Perso } from './perso'; 

@Pipe({ name: 'startsWithPersoPipe' }) 
export class StartsWithPersoPipe implements PipeTransform { 
    transform(Persos: Perso[], search:string){ 
    // without this if will crash as Persos is null until it gets its data from server 
    if(Persos == null) { 
     return null; 
    } 
    for(let perso of Persos){ 
     console.log(perso.nom); // works fine 
     console.log(perso.nom | lowercase); // ORIGINAL EXCEPTION: ReferenceError: lowercase is not defined 
    } 
    return Persos.filter(p => (p.nom) && (p.nom).startsWith(search)); // works fine 
    } 
} 

回答

2
console.log(perso.nom | lowercase); 

是不应该工作。

| somePipe 

仅在绑定表达式中的模板中受支持。

您可以使用管道中的代码一样

constructor(private lowercase: LowerCasePipe) {} 

console.log(this.lowercase.transform(perso.nom)); 

您还没有导入LowerCasePipe

而不是使用管道也可以只是调用该方法对字符串

perso.nom && perso.nom.toLowerCase()