如何在 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));
}
}
我已经下定决心:
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));
}
}