在Angular 7中,paramMap和Snapshot是用于在路由器中获取路由参数的两种不同方式。paramMap是一个Observable对象,它可以订阅来获取路由参数的最新值。而Snapshot是一个快照对象,它在路由参数变化时只会获取一次参数的值。
如果在Angular 7中,paramMap不起作用,但Snapshot工作正常,可能是因为在订阅paramMap时出现了一些问题。下面是一种可能的解决方法:
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.paramMap.subscribe(params => {
// 在这里处理参数变化的逻辑
// 例如:获取路由参数的值
const id = params.get('id');
console.log(id);
});
}
确保在组件销毁时取消订阅paramMap:
ngOnDestroy() {
this.route.paramMap.unsubscribe();
}
通过以上步骤,你应该能够正确地订阅和获取paramMap中的路由参数。如果问题仍然存在,可能是由于其他原因导致的,请尝试在问题的具体上下文中进行更详细的排查和调试。