Error Encyclopedia

inject() must be called from an injection context

You see this error when you try to use the inject function outside of the allowed injection context. The injection context is available during the class creation and initialization. It is also available to functions used with runInInjectionContext.

In practice the inject() calls are allowed in a constructor, a constructor parameter and a field initializer:

@Injectable({providedIn: 'root'})export class Car {  radio: Radio | undefined;  // OK: field initializer  spareTyre = inject(Tyre);  constructor() {    // OK: constructor body    this.radio = inject(Radio);  }}

It is also legal to call inject from a provider's factory:

providers: [  {    provide: Car,    useFactory: () => {      // OK: a class factory      const engine = inject(Engine);      return new Car(engine);    },  },];

Calls to the inject function outside of the class creation or runInInjectionContext will result in error. Most notably, calls to inject() are disallowed after a class instance was created, in methods (including lifecycle hooks):

@