2017-03-08 662 views
0

我有一個名爲User的模型,我在我的服務中有一個Observer,它叫做,它得到一堆JSON 。對象void'不能分配給參數類型'(value:User [],index:number)=>布爾型'

在我的部分,我有以下

@Input() users: User[] = []; 

,我並試圖用這樣的:

getUserByLastName(lastName){ 

     this._searchService.getUsers() 
      .filter(users => { 
       for(let user of users) { 
        if(user.lastName == lastName){ 
         this.users.push(user); 
        }}}) 
      .subscribe(users => this.users = users, 
       error =>this.errorMessage =<any> error); 

     return this.users; 

    } 

但是這條線.filter(users => {是給我一個錯誤說:

Argument of type '(users: User[]) => void' is not assignable to 
parameter of type '(value: User[], index: number) => boolean'. Type 
'void' is not assignable to type 'boolean 

後來我試着用它來初始化變量,所以我可以填充它不同的形式。

case "lastName": 
       this.users = this.getUserByLastName(this.lastName); 

如果這是混亂的,我有兩頁。一個是隱藏的,直到在默認頁面中點擊一行。表單位於另一個表單(隱藏的表單)中,該表單用於填充表單中要選擇的用戶(行)的數據進行編輯。

回答

3

我想你可以有不同的術語,你想過濾。如果沒有,您可以將姓氏傳遞給服務進行篩選,但是如果您想在組件中進行篩選,請執行以下操作。如果您需要返回過濾的數據,請按照要求將其返回,並在需要的位置訂閱。所以:

getUserByLastName(lastName){ 
    return this._searchService.getUsers() 
     .map(data => { 
     return data.filter((x: any) => x.lastName == lastName); 
     }) 
} 

,並在你需要它,訂閱:

this.getUserByLastName(this.lastName) 
    .subscribe(data => { 
    this.users = data; 
    }); 
1

這可以使用lodash如下容易實現

users =<User[]> _.pullAllWith(users,{lastName : 'yourparameter'}, _.isEqual); 
相關問題