我已经从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; }) )
我在使用使用了Deprecated Symbol的switchMap时收到警告.
这些是我的导入:从’rxjs /运算符’导入{map,switchMap};
在v6中有没有其他方法可以使用switchMap?此外,如果我不更改我的代码rxjs-compat应该使我现有的代码工作(我已安装)但我得到以下错误相同的代码,但在RxJS 5样式:
.map(job => job[0]) .switchMap((job) => { return job ? this.bookingService.findByID(job.property.id) : Observable.empty(); },bookings); return job; })
错误:预期1个参数但得到2.
作为switchMap的第二个参数给出的resultSelector函数是
deprecated.您需要删除它并使用map运算符实现目标.
原文链接:https://www.f2er.com/angularjs/141295.html这里最棘手的部分是决定放置地图运算符的位置.实际上地图运算符进入了作为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; }) ); } ) )