使用route.snapshot

时间:2019-03-24 04:58:24

标签: angular

我有一条具有动态路径段的路线

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无法正常工作。您能帮我解决这个问题吗

1 个答案:

答案 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);        
});