为什么在注入接口时,角度项目会失败AoT构建?

时间:2017-11-07 17:13:30

标签: angular typescript dependency-injection interface angular2-aot

好的,对不起,标题不清楚。

我正在尝试实现一个涉及注入接口的模式。它在JIT中完美运行,但在AoT中没有。我希望得到一个解释为什么这不起作用,并希望一些建议,使其工作。这是模式的简化示例。

数据manager.interface.ts

@Injectable() export class DataManager implements DataManager {}

export interface DataManager {

    getData(): Promise<Array>;
    ...
}

^声明接口

dashboard.service.ts

@Injectable() export class DashboardService {

    constructor(public dataManager: DataManager, ... ){
        ...
    }
}

^注入接口

app.service.ts

import { DataManager as DashboardDataManager } from '.../data-manager.interface';
@Injectable() export class AppService implements DashboardDataManager {

    getData(): Promise<Array>{
        ...
    }
}

^实现接口

app.modules.ts

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]).

*请注意,编译器打印出完整路径,但我将其编辑出来,只保留文件名。

请帮忙!我真的很感激这个干净的解决方案!

谢谢, 乙

0 个答案:

没有答案