【发布时间】:2021-02-02 04:58:54
【问题描述】:
我想调用一个调用服务的服务。两者都被注入并使用相同的接口/抽象类。
export abstract class Service {
abstract getTitle(): string;
}
@Injectable({
providedIn: "root"
})
export class BService extends Service {
getTitle() {
return "from B";
}
}
@Injectable({
providedIn: "root"
})
export class AService extends Service {
constructor(private service: Service) {
super()
}
getTitle() {
return this.service.getTitle();
}
}
@NgModule({
providers: [{ provide: Service, useClass: BService }]
})
export class AModule {}
@NgModule({
imports: [BrowserModule, FormsModule, AModule],
declarations: [AppComponent, HelloComponent],
bootstrap: [AppComponent],
providers: [{ provide: Service, useClass: AService }]
})
export class AppModule {}
export class HelloComponent {
title: string;
constructor(service: Service) {
this.title = service.getTitle();
}
我得到:
Provider parse errors:
Cannot instantiate cyclic dependency! Service ("[ERROR ->]"): in NgModule AppModule in ./AppModule@-1:-1
https://stackblitz.com/edit/angular-tqoena
不重复自己如何做到这一点?
【问题讨论】:
标签: angular typescript dependency-injection interface abstract-class