Data Resolvers
Data resolvers fetch data before a route activates, ensuring components have the necessary data upon rendering.
Data resolvers fetch data before a route activates, ensuring components have the necessary data upon rendering.
Data resolvers fetch data before a route activates, ensuring components have the necessary data upon rendering.
Implement the `ResolveFn` type.
export const userResolver: ResolveFn<User> = (route, state) => {
const userService = inject(UserService);
const id = route.paramMap.get('id')!;
return userService.getUser(id);
};Add the resolver under the `resolve` key.
{
path: 'user/:id',
component: UserProfile,
resolve: {
user: userResolver
}
}private route = inject(ActivatedRoute);
data = toSignal(this.route.data);
user = computed(() => this.data().user);Enable `withComponentInputBinding()` in `provideRouter` to pass resolved data directly to `@Input` or `input()`.
// app.config.ts
provideRouter(routes, withComponentInputBinding());
// component.ts
user = input.required<User>();Navigation is blocked if a resolver fails.
return userService
.get(id)
.pipe(catchError(() => of(new RedirectCommand(router.parseUrl('/error')))));