I have a resolve defined:
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);
});
}
}
And the route:
{
path: 'items/edit/:id',
component: ItemeditorComponent,
resolve: {item: ItemResolve}
}
In resolve, i always get empty array, null or undefined values, it does not matter what im trying to use. I tried routeParams, parads, data and every possible variations that was available in google i think..
Does anyone have any idea to solve this?
The route method takes a ActivatedRouteSnapShot
argument, that you should use:
interface Resolve<T> {
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<T> | Promise<T> | T
}
https://angular.io/api/router/Resolve
In your case
export class ItemResolve implements Resolve<number> {
resolve(route: ActivatedRouteSnapshot): Promise<number> {
const id = route.paramMap.get('id');
return new Promise((resolve) => resolve(0));
}
}