如何在 Angular 中获取 resolve 中的路由参数值?

How to get route param value in resolve in Angular?

我已经下定决心:

export class ItemResolve implements Resolve<number> {
    constructor(private activatedRoute: ActivatedRoute) {}
    resolve(): Promise<number> {
        console.log(this.activatedRoute.snapshot.paramMap); // EMPTY OBJECT
        console.log(this.activatedRoute.snapshot.paramMap.get('id'));  // NULL
        console.log(this.activatedRoute.snapshot.data);  // EMPTY OBJECT
        console.log(this.activatedRoute.snapshot.param);  // EMPTY OBJECT
        return new Promise((resolve) => {
            resolve(0);
        });
    }
}

路线:

{
    path: 'items/edit/:id',
    component: ItemeditorComponent,
    resolve: {item: ItemResolve}
}

在 resolve 中,我总是得到空数组、null 或未定义的值,这与我尝试使用什么无关。我尝试了 routeParams、parads、data 以及我认为 google 中可用的所有可能变体..

有没有人知道如何解决这个问题?

路由方法有一个 ActivatedRouteSnapShot 参数,你应该使用:

interface Resolve<T> {
  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<T> | Promise<T> | T
}

https://angular.io/api/router/Resolve

你的情况

export class ItemResolve implements Resolve<number> {

    resolve(route: ActivatedRouteSnapshot): Promise<number> {
      const id = route.paramMap.get('id');
      return new Promise((resolve) => resolve(0));
    }
}