Spec-Zone.ru › Angular

StaticClassProvider

Настраивает Injector так, чтобы он возвращал экземпляр useClass для токена.

Руководство по внедрению зависимостей

API

interface StaticClassProvider extends StaticClassSansProvider {
  provide: any;
  multi?: boolean | undefined;
  override useClass: Type<any>;
  override deps: any[];
}

provide

any

Токен внедрения. Обычно это экземпляр Type или InjectionToken, но это также может быть any.

multi

boolean | undefined

Если значение равно true, инжектор возвращает массив экземпляров. Это полезно, когда нескольким провайдерам из разных файлов нужно передавать конфигурационную информацию одному и тому же токену.

useClass

Type<any>

Необязательный класс для создания экземпляра для token. По умолчанию создается экземпляр класса provide.

deps

any[]

Список token, которые должен разрешить инжектор. Затем этот список значений используется в качестве аргументов конструктора useClass.

Примечания по использованию

abstract class Shape {
          name!: string;
        }

        class Square extends Shape {
          override name = 'square';
        }

        const injector = Injector.create({
          providers: [{provide: Shape, useClass: Square, deps: []}],
        });

        const shape: Shape = injector.get(Shape);
        expect(shape.name).toEqual('square');
        expect(shape instanceof Square).toBe(true);

Обратите внимание, что следующие два провайдера не равны:

class Greeting {
          salutation = 'Hello';
        }

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

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

        // The injector returns different instances.
        // See: {provide: ?, useExisting: ?} if you want the same instance.
        expect(injector.get(FormalGreeting)).not.toBe(injector.get(Greeting));

Пример с несколькими значениями

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']);

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/core/StaticClassProvider

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API