Если вы вводите услугу непосредственно классом, вам не нужно @Inject()
:
@Injectable()
export class ServiceA2 {
constructor(private serviceA1: ServiceA1) {
}
Это то же самое, что и
@Injectable()
export class ServiceA2 {
constructor(@Inject(ServiceA1) private serviceA1: ServiceA1) {
}
Обратите внимание, что вы ввели @Inject('ServiceA1')
вместо @Inject(ServiceA1)
. Это соответствует строковому токену вместо класса и поэтому не может быть разрешено.
Если вы хотите внедрить класс с помощью строкового токена, вам нужно объявить провайдера в вашем модуле следующим образом:
providers: [
ServiceA2,
{provide: 'ServiceA1', useClass: ServiceA1},
]
Это также работает в том же модуле.