void'不能分配给参数类型'(value:User [],index:number)=>布尔型'
问题描述:
我有一个名为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);
如果这是混乱的,我有两页。一个是隐藏的,直到在默认页面中点击一行。表单位于另一个表单(隐藏的表单)中,该表单用于填充表单中要选择的用户(行)的数据进行编辑。
答
我想你可以有不同的术语,你想过滤。如果没有,您可以将姓氏传递给服务进行筛选,但是如果您想在组件中进行筛选,请执行以下操作。如果您需要返回过滤的数据,请按照要求将其返回,并在需要的位置订阅。所以:
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;
});