如何从Angular Resolver组件的URL获取ID

时间:2019-06-18 12:11:24

标签: angular angular-routing

我正在使用解析器组件,但无法从URL获取ID。

Stackblitz-https://stackblitz.com/edit/angular-x4djgz

在堆叠闪电战中,如果我导航到ConcurrentModificationExceptions

我从解析器获取supplier/3,从最终组件获取params.get('id') null。如何在解析器中获取端点ID。

params.get('id') 3

这个问题已经过大量编辑,因为我原本以为这是一个角度+电子应用程序。

3 个答案:

答案 0 :(得分:2)

根据the Angular doc,正如您在guide的示例中看到的那样,resolve方法采用两个与您要解析的实际路线相关的参数。

在解析器中使用此命令可解决此问题:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
    console.log("params.get('id')", route.paramMap.get('id'));
    return of('dummy').pipe(delay(50));
  }

https://stackblitz.com/edit/angular-4fkspm

答案 1 :(得分:1)

您可以通过下面的代码段在解析器中获取ID,

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)
: Observable<any> | Promise<any> | any {
    let id = route.params['id'];
    return this.service.get(id);
}

答案 2 :(得分:0)

尝试一下

 constructor(private route: ActivatedRoute) {
    route.params.subscribe(
     (params) => {
       console.log("params.get('id')", params['id']);
     });
  }