我想订阅activatedRoute并仅在第一次时读取参数(例如ngOnInit)。我正在内部使用switchMap,使用从params中的id
从服务器获取数据。
ngOnInit() {
this.activatedRoute.paramMap
.pipe(
take(1),
filter((params) => params.has('id')),
switchMap((params) => {
this.loading = true
return this.jobReportService.get(+params.get('id'))
}),
tap((jobReport) => {
this.layoutForm.setValue(jobReport)
this.loading = false
}),
)
.subscribe()
}
问题是当我尝试离开该组件时,paramMap订阅仍处于活动状态(即使我使用了take(1)
),并且触发了另一个switchMap操作,导致使用undefined
进行API调用。这将导致HTTP错误并停止导航。我究竟做错了什么?