我有一条具有动态路径段的路线
const route:Routes=[
{path:'customers',component:CustomerComponent}
{path:'customers/:id',component:CustomerComponent}
]
因此在我的客户组件中,我使用 id:number;
constructor(private route:ActivatedRoute){}
ngOnInit(){
this.id= this.route.snapshot.params['id'];
console.log("Id is :",this.id)
}
当我从另一个组件转到此路由路径时,控制台日志“ Id为:1”还是第一次运行此路由“ localhost:4200 / customers / 1”时,它正常运行,但是会出现问题。我写了一个链接 customer.html文件
<a [routerLink]="['/customer',2]">loadID2</a>
单击此链接时,URL更改为“ localhost:4200 / customers / 2”,但控制台日志不起作用,它没有显示“ Id is:2”,没有控制台日志。 我的问题为什么会发生?,URL已经更改,但是ngOninit无法正常工作。您能帮我解决这个问题吗
答案 0 :(得分:1)
而不是使用ActivatedRoute.snapshot
获取路线参数,而是订阅ActivatedRoute.paramMap
Observable以获取新的id
:
this.route.paramMap.subscribe((params : ParamMap)=> {
this.id = +params.get('id');
console.log("Id is :", this.id);
});