好的,对不起,标题不清楚。
我正在尝试实现一个涉及注入接口的模式。它在JIT中完美运行,但在AoT中没有。我希望得到一个解释为什么这不起作用,并希望一些建议,使其工作。这是模式的简化示例。
@Injectable() export class DataManager implements DataManager {}
export interface DataManager {
getData(): Promise<Array>;
...
}
^声明接口
@Injectable() export class DashboardService {
constructor(public dataManager: DataManager, ... ){
...
}
}
^注入接口
import { DataManager as DashboardDataManager } from '.../data-manager.interface';
@Injectable() export class AppService implements DashboardDataManager {
getData(): Promise<Array>{
...
}
}
^实现接口
import { DataManager as DashboardDataManager } from '.../data-manager.interface';
@NgModule({
...,
providers: [
AppService,
{ provide: DashboardDataManager, useExisting: AppService },
...
]
})
^提供接口
这种模式欺骗了编译器(至少是JIT编译器)允许注入DataManager。但是为什么它适用于JIT而不是AOT?
以下是我从编译器获得的错误:
ERROR in Can't resolve all parameters for DashboardService in dashboard.service.ts: (?, [object Object], [object Object], [object Object]).
*请注意,编译器打印出完整路径,但我将其编辑出来,只保留文件名。
请帮忙!我真的很感激这个干净的解决方案!
谢谢, 乙