2017-05-17 130 views
0

我寫了一個管道,應該過濾AUID和名字,但不知何故,它只會爲名字工作。任何人都可以幫我弄清楚爲什麼?角2管道規則

這裏是代碼:

 return value.filter((searchresult:ISearch)=> 
     (filterBy2?searchresult.AU_ID.indexOf(filterBy2)!==-1:true)&& 
     (filterBy?searchresult.first_name.toLocaleLowerCase().indexOf(filterBy)!==-1:true) 
+1

你能簡化這到[mcve]?這似乎相當複雜,你沒有提供任何投入和預期/實際產出。 – jonrsharpe

+0

這是我編寫的管道變換的所有代碼。問題不是關於其他問題,而是關於其他問題,但是隻有返回部分。如果我以這種方式編寫,他們兩個都可以工作嗎? –

+0

...什麼? *「這是所有的代碼」*是問題的一部分,你有沒有對自己的任何調試? – jonrsharpe

回答

0

我用您所提供的相同的代碼。它爲我工作。你能確保AU_ID是一個字符串,作爲參數而不是數字來傳遞,在這種情況下,indexOf將不起作用。

transform(value: Array<any>, filterBy: string, filterBy2: string): Array<any> { 
    filterBy = filterBy ? filterBy.toLocaleLowerCase() : null; 
    filterBy2 = filterBy2 ? filterBy2 : null; 
    return value.filter((searchresult: Array<any>) => 
     (filterBy2 ? searchresult['AU_ID'].indexOf(filterBy2) !== -1 : true) && 
     (filterBy ? searchresult['first_name'].toLocaleLowerCase().indexOf(filterBy) !== -1 : true) 
    ); 
    } 

在HTML文件中,我用下面的代碼:

<div *ngFor="let dummy of dummyData | screeningSearch: 'A' : '1'">hi {{dummy.first_name}}</div> 

保存的數據如下:

dummyData = [ 
    { 
     'AU_ID': '1234', 
     'first_name': 'Albert' 
    }, 
    { 
     'AU_ID': '5678', 
     'first_name': 'Andi' 
    } 
    ]; 

結果:

hi Albert

+0

謝謝,我解決了這個問題 –