如何将滤波器应用到可观测的中,以便能够根据某些条件获得数据?我的要求是,我想从userObservable中筛选出用户,其状态是“经批准的”。
下面是我的http服务方法。
getUserList(){
return this.httpClient.get<UserModel[]>(environment.userListUrl);
}下面是UserModel
export class UserModel{
userName: string;
userStatus: string;
}这就是我想要做的,但不确定如何应用过滤器,这样我就可以得到userStatus是“”的用户。
const userObservable$: Observable<UserModel[]>=this.userService.getUserList(this.cmpnyId);
observable$.pipe(filter(....<Need help here>));发布于 2020-04-10 14:04:00
查看RxJS关于地图操作符的文档:
filteredObservable$ = userObservable$.pipe(
map(users => users.filter(user => user.userStatus == "Approved"))
)您应该将可观察到的值映射到一个新的筛选数组。您使用的filter运算符只能用于允许或丢弃可观察到的值,它与.filter数组函数无关,后者从数组中筛选某些元素。
发布于 2020-04-10 14:16:19
您可以在服务中使用它,以便将业务逻辑保留到服务中。
代码示例:
enum Status{
approved = 'Approved'
}
getUserList(){
return this.httpClient.get<UserModel[]>(environment.userListUrl)
.pipe(
map(users =>
users.filter(user =>
user.userStatus == Status.approved))
}注意,请将Enum用于类似的内容,以便使将来的状态更改更容易。
https://stackoverflow.com/questions/61141889
复制相似问题