如何从 url 获取 Angular 解析器组件的 ID

How do I get id from url for Angular Resolver component

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

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

在 stackblitz 中,如果我导航到 supplier/3:

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

route.paramMap.subscribe(
    (params: ParamMap) => {
      console.log("params.get('id')", params.get('id'));
    }
);

这个问题已经过大量编辑,因为我最初认为这与 angular+electron 应用程序有关。

试试这个,

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

您可以使用下面的代码片段在解析器中获取 ID,

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

根据 the Angular doc, as you can see in example in the guideresolve 方法采用两个参数,这两个参数与您尝试解析的实际路线有关。

在解析器中使用它可以解决问题:

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