Search code examples
angularangular-injector

Functional resolver with two injected services (Angular 15)


In my resolver, I am trying to inject two services, which uses response of one as input for next service call:

export const addressResolver : ResolveFn<Address> = (
  route: ActivatedRouteSnapshot
) => {

  return inject(UserService).getUserInfo().pipe(
    mergeMap((user: any) => {
      return inject(AddressService).getAddressByUserId(route.params['addressType'], user.id).pipe(
        map((res:any)=>{
           return res;
        }
      ));
    })
  );
};

This code throwing error as

Uncaught (in promise): Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with EnvironmentInjector#runInContext

Can anyone please help what is missing here in this code block. Thanks in advance


Solution

  • Could you try assigning them to variables and then performing the calls?

    export const addressResolver : ResolveFn<Address> = (
      route: ActivatedRouteSnapshot
    ) => {
      const userServiceInjector = inject(UserService);
      const addressServiceInjector = inject(AddressService);
      return userServiceInjector.getUserInfo().pipe(
        mergeMap((user: any) => {
          return addressServiceInjector.getAddressByUserId(route.params['addressType'], user.id).pipe(
            map((res:any)=>{
               return res;
            }
          ));
        })
      );
    };