无法解决使用@Injectable AND @Inject修复的所有参数?

时间:2017-12-04 14:13:17

标签: angular typescript webpack angular5

我一直在慢慢升级到Angular 5.但是,几天前我开始从我的ApiService看到这个错误: can't resolve all parameters for ApiService(?)

这只是在我添加新组件后才开始发生(其中没有一个实际使用相关服务)。在此之前,ApiService工作得很好。我的ApiService看起来像这样:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
...
@Injectable()
export class ApiService {
    constructor(private http: HttpClient)
}
... 

我的tsconfig.json已经有'emitDecoratorMetadata'设为true。我的app.module.ts将ApiService作为提供者并正确导入。

然而,如果我同时使用@Injectable和@Inject,那么它会更快乐并且编译得更好(我这样做是为了测试它为什么会破坏;我知道这是你不应该做的事情'我需要这样做)。

我可能会遗忘另一种配置吗?到目前为止,我发现的大多数答案都说包括@Injectable()include,emitDecoratorMetadata,或者将服务作为app.module.ts提供程序的一部分,我已经完成了所有这些。同样,ApiService一直在努力,直到我开始添加更多组件。

我使用webpack-dev-server运行我的服务器。如果我使用' ng serve'它工作得很好,这让我相信我如何配置webpack-dev-server可能有问题?最近是否有更新可能需要我稍微改变一下配置?

感谢您的任何建议和帮助!

1 个答案:

答案 0 :(得分:2)

啊哈! 'Uncaught Error: Can't resolve all parameters for' runtime error when upgrading from Angular 4 to 5.0.1

似乎我只需要添加

import 'core-js/es6/reflect';
import 'core-js/es7/reflect';

到我的polyfills.ts。这似乎是升级到Angular 5的一个特定问题。我希望这可以帮助其他任何有类似问题的人!