Cookies concent notice

This site uses cookies from Google to deliver its services and to analyze traffic.
Learn more
Skip to main content
Say hello to Angular's future home!Check out Angular.devHome
/

ExistingProvider

Configures the Injector to return a value of another useExisting token.

      
      interface ExistingProvider extends ExistingSansProvider {
  provide: any
  multi?: boolean

  // inherited from core/ExistingSansProvider
  useExisting: any
}
    

See also

Properties

Property Description
provide: any

An injection token. Typically an instance of Type or InjectionToken, but can be any.

multi?: boolean

When true, injector returns an array of instances. This is useful to allow multiple providers spread across many files to provide configuration information to a common token.

Usage notes

      
      class Greeting {
  salutation = 'Hello';
}

class FormalGreeting extends Greeting {
  override salutation = 'Greetings';
}

const injector = Injector.create({
  providers: [
    {provide: FormalGreeting, deps: []},
    {provide: Greeting, useExisting: FormalGreeting},
  ],
});

expect(injector.get(Greeting).salutation).toEqual('Greetings');
expect(injector.get(FormalGreeting).salutation).toEqual('Greetings');
expect(injector.get(FormalGreeting)).toBe(injector.get(Greeting));
    

Multi-value example

      
      const locale = new InjectionToken<string[]>('locale');
const injector = Injector.create({
  providers: [
    {provide: locale, multi: true, useValue: 'en'},
    {provide: locale, multi: true, useValue: 'sk'},
  ],
});

const locales: string[] = injector.get(locale);
expect(locales).toEqual(['en', 'sk']);