我们如何将过滤器应用于Observable,以便根据某些条件获取数据?我的要求是从userObservable中筛选出状态为">Approved"的用户。
下面是我的http服务方法。
getUserList(){
return this.httpClient.get<UserModel[]>(environment.userListUrl);
}
以下是用户模型
export class UserModel{
userName: string;
userStatus: string;
}
这就是我正在尝试做的,但不确定如何应用过滤器,以便我可以获得userStatus为">Approved"的用户
const userObservable$: Observable<UserModel[]>=this.userService.getUserList(this.cmpnyId);
observable$.pipe(filter(....<Need help here>));
您可以在服务中使用它,以便将业务逻辑保留到服务中。
代码示例:
enum Status{
approved = 'Approved'
}
getUserList(){
return this.httpClient.get<UserModel[]>(environment.userListUrl)
.pipe(
map(users =>
users.filter(user =>
user.userStatus == Status.approved))
}
注意,为了便于将来更改状态,请将Enum用于类似的操作。
查看RxJS关于映射运算符的文档:
filteredObservable$ = userObservable$.pipe(
map(users => users.filter(user => user.userStatus == "Approved"))
)
您应该将Observable的值映射到一个新的过滤数组。您正在使用的filter
运算符只能用于允许或丢弃Observable发出的值,它与.filter
数组函数无关,后者从数组中过滤某些元素。