当我的 angular 组件中的可观察对象完成时,什么也没有发生

nothing happens when the observable is completed in my angular component

在我的 Angular 组件中,我有这个

ngOnInit(): void {
this.route.paramMap
.pipe(
  tap(item=>console.log(item))
)
.subscribe(
  params => {
    const proyectoId = params.get('proyectoId');
    this.empleadoId = +params.get('empleadoId');
  }
  ,err=>console.log(err)
  ,()=>{
    console.log('Hola');
  }
);

}

但是当我调试时,我没有看到 console.log

有什么想法吗?

谢谢

从 Angular 的 ActivatedRoute#paramMap 返回的 observable 是永久的,除非明确关闭。如果你只想使用第一个发射(在大多数理想情况下它应该足够 paramMap),你可以输入一个 take(1)。它会在第一次发射后关闭 observable。

this.route.paramMap.pipe(
  take(1)
  tap(item => console.log(item)),
).subscribe(
  ...
);

就是说,如果您不能使用 take(1),最好在组件的 ngOnDestroy() 挂钩中关闭此类可观察对象。它将确保在组件关闭后打开的可观察对象不会发生内存泄漏。有关详细信息,请参阅 here