Угловая инъекция: неразрешенные параметры, если InjectionToken помещен в объект

Я реализовал интерфейс Service разрешить издевательство во время тестирования. Этот интерфейс вводится с помощью InjectionToken, InjectionToken постоянный идентификатор Я хотел собрать все эти константы в один объект, который позволяет легко их использовать:

const TYPES = {
    Service: new InjectionToken<Service>("service"),
};

export default TYPES;

Теперь я могу использовать TYPES.Service чтобы получить InjectionToken установка провайдера:

providers: [{
    provide: TYPES.Service,
    useClass: DefaultService
},

@Inject() Аннотирование также легко устанавливается:

constructor(@Inject(TYPES.Service) service: Service)

Но если я запускаю этот код, не все параметры разрешаются:

ERROR in : Can't resolve all parameters for FooComponent in /../src/app/components/foo/foo.component.ts: (?).

Этот шаблон использования объекта отлично работает для DI с InversifyJS в другой библиотеке TypeScript, которую я строю. Ошибка происходит из-за чего-то с токеном инъекции внутри объекта. Если я поставлю InjectionToken вне объекта это работает:

export const SERVICE_INJECTION_TOKEN = new InjectionToken<Service>("service");

я добавил @Injectable() к DefaultService и проверил импорт polyfill.

Почему ставить InjectionToken в объекте вызвать неразрешенную ошибку параметра?

0 ответов

Другие вопросы по тегам