Угловая инъекция: неразрешенные параметры, если 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
в объекте вызвать неразрешенную ошибку параметра?