作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经从 Angular 5
更新到 Angular 6
。现在我正在尝试更新我的代码以使其与 RxJS 6
兼容。
.pipe(
map(job => job[0]),
switchMap((job) => {
return job ? this.bookingService.findByID(job.property.id) : Observable.empty();
}, (job: Job, bookings: Booking[]) => {
this.mark_jobs_unavailable(job, bookings);
return job;
})
)
我在使用 switchMap 时收到警告,指出 Deprecated Symbol is used
。
这些是我的导入:import {map, switchMap} from 'rxjs/operators';
有没有其他方法可以在 v6 中使用 switchMap?另外,如果我不更改我的代码,rxjs-compat
应该可以使我现有的代码正常工作(我已经安装了)但是我使用相同的代码但在 RxJS 5 样式中得到以下错误:
.map(job => job[0])
.switchMap((job) => {
return job ? this.bookingService.findByID(job.property.id) : Observable.empty();
}, (job: Job, bookings: Booking[]) => {
this.mark_jobs_unavailable(job, bookings);
return job;
})
错误:需要 1 个参数但得到 2 个参数
。
最佳答案
作为 switchMap
的第二个参数给出的 resultSelector 函数是 deprecated .您需要删除它并使用 map
运算符实现目标。
这里最棘手的部分是决定将 map
运算符放在哪里。实际上,映射运算符进入作为 switchMap
参数提供的函数主体。
没有结果选择器函数的代码会像下面这样:
.pipe(
map(job => job[0]),
switchMap((job) => {
return (job ? this.bookingService.findByID(job.property.id) : Observable.empty()).pipe(
// This is the mapping function provided as the alternative to the deprecated result selector function
// This should be placed inside the body of the function which is the 1st (and only one) argument of switchMap
map((bookings: Booking[])=>{
this.mark_jobs_unavailable(job, bookings);
return job;
})
);
}
)
)
关于angular - RxJS 6 switchMap 弃用符号使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50478696/
我是一名优秀的程序员,十分优秀!