Я получаю эту ошибку только при тестировании. Мой build -prod работает, проект демонстрационного приложения, который использует встроенную библиотеку, может полностью взаимодействовать со всеми аспектами параметров рассматриваемых сервисов. Я использую сборник рассказов и вижу загруженные фиктивные данные, которые не вызывают проблем при работе непосредственно в библиотеке с ivy. Я на angular 9.1.1. Тесты в шутку, но это не проблема в других местах проекта.
У меня есть библиотека, которая имеет 2 службы, полученные из базового класса. Сам базовый класс не имеет @Injectable decorator.
Тест для одной из дочерних служб выдает ошибку:
This constructor is not compatible with Angular Dependency Injection because its dependency at index 0 of the parameter list is invalid.
This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.
Please check that 1) the type for the parameter at index 0 is correct and 2) the correct Angular decorators are defined for this class and its ancestors.
Как ни странно, другой службы нет. Добавление декоратора @Injectable требует, чтобы я также изменил базовый класс, чтобы параметр 0 всех трех классов был одинаковым для каждого символа. Но после этого я продолжаю получать сообщение об ошибке.
некоторые фрагменты:
/** this base class exists because we provide a standard mock for the alerts service */
@Injectable()
export abstract class AlertsBase
implements IPreloadingService, ICommonService {
abstract serviceIdentifier: IConstructor<AlertsBase>
isPreloaded: boolean
delegate: ICachingService
constructor (
@Inject(CACHING_SERVICE_DELEGATE) cachingService: ICachingService
) {
this.delegate = cachingService
}
/** exposed mock service (a demonstration) */
@Injectable({
providedIn: 'root'
})
export class MockAlertsService extends AlertsBase {
serviceIdentifier = AlertsService
constructor (
@Inject(CACHING_SERVICE_DELEGATE) cachingService: ICachingService,
@Inject(ALERTS_ENDPOINT) private endpoint: string,
@Inject(MOCK_APP_ALERTS) private model: string
) {
super(cachingService)
console.debug('%c[MockAlertsService]', 'color: #f6b73c', 'constructor')
}
/** get alerts to display atop each page in alert components */
@Injectable({
providedIn: 'root'
})
export class AlertsService extends AlertsBase {
serviceIdentifier = AlertsService
constructor (
private httpClient: HttpClient,
@Inject(CACHING_SERVICE_DELEGATE) cachingService: ICachingService,
@Inject(ALERTS_ENDPOINT) private endpoint: string
) {
super(cachingService)
console.debug('%c[AlertsService]', 'color: #f6b73c', 'constructor')
}