我正在像这样构建我的 angular2 服务
import { OpaqueToken, ClassProvider } from "@angular/core";
export interface IService {
// ... interface declaration
}
export class Service implements IService {
// ... implementation goes here
}
export const IService = new OpaqueToken(Service.name);
export const ServiceProvider: ClassProvider = {
provide: IService,
useClass: Service,
};
使用 ngc 和 angular 2.xx 可以很好地工作和编译但是在升级到 angular 4.xx 后,在组件“提供者”数组中使用时,ServiceProvider 不能再进行 ngc 编译。(有趣的是,当提供程序注册在 ngModule 中而不是在组件中时,整个事情都有效。)
我在控制台上得到以下信息:
events.js:160 抛出 er;// 未处理的“错误”事件 ^ 错误:命令失败:npm run ngc 错误:内部错误:未知标识符 {}
有什么想法吗?我可能会将我的服务转换为 @Injectable() 并且不使用该接口,但这似乎与使用服务接口的整个想法背道而驰:(
仅供参考:我正在使用 TypeScript 2.2.2
非常感谢你的帮助!