Complete the code to create a resolver class that implements the correct interface.
export class DataResolver implements [1] { resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { // logic here } }
The resolver class must implement Resolve to pre-fetch data before route activation.
Complete the resolver function to return an observable from the service.
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this.dataService.[1]();
}The service method getData() returns the observable needed for pre-fetching.
Fix the error in the resolver provider registration.
providers: [
{
provide: [1],
useClass: DataResolver
}
]The provider token for resolver classes is a custom injection token like DATA_RESOLVER, not ResolveFn.
Fill both blanks to define a route that uses the resolver to pre-fetch data.
const routes: Routes = [
{
path: 'items',
component: ItemsComponent,
resolve: { data: [1] },
providers: [[2]]
}
];The resolve property uses the resolver name dataResolver, and the providers array includes dataResolverProvider to register it.
Fill all three blanks to create a resolver function that fetches data and handles errors.
export const dataResolver: ResolveFn<any> = (route, state) => {
return dataService.[1]().pipe(
catchError(error => {
console.error(error);
return of([2]);
})
);
};
providers: [
[3]
]The resolver calls getData(), returns an empty object {} on error, and registers dataResolverProvider as provider.