2016-08-16 88 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()