The last router function of our guard series is resolve
. It is the replacement for class-based resolvers. A resolver function runs after all guards have run and before the destination component is rendered. Such a function is typically used to preload component data before rendering it on the screen.
For instance, in this example:

heroResolver
is a function that returns either some data or a Promise
or an Observable
of that data. Such data will be stored in the hero
property of a data
object returned by an Observable from the ActivatedRoute
service as follows:

Of course, we could resolve multiple different pieces of data using the following syntax:
resolve: {user: userResolver, session: sessionResolver},
Code language: JavaScript (javascript)
A resolver function can use the inject
function to use services and resolve data as follows:
export const userResolver: ResolveFn<User> = () => {
return inject(UserService).getCurrentUser();
};
Code language: TypeScript (typescript)