Angular2 - 错误:无法解析IconService的所有参数
我一直在试图将我的应用程序切换到AoT编译,并且在应用程序加载时(在本地正常工作时)在生产环境中出现此错误。Angular2 - 错误:无法解析IconService的所有参数
Error: Can't resolve all parameters for IconService: (?, ?)
好像错误是从正在提供IconService模块到来。图标服务构造看起来像
constructor(private http:Http, private iconConfiguror:IconConfiguror) {
所以我的问题是,这是什么错误意味着,它为什么会在PROD环境发生只(我已经试过在本地实现PROD模式)?
现在看来似乎意味着,不设置http和图标的配置参数,但在应用程序模块水平设置的图标配置和HttpModule
在其中设置的IconService
进口IconModule
。
@NgModule({
imports: [
CommonModule,
HttpModule,
],
declarations: [
IconComponent,
],
exports: [
IconComponent,
],
providers: [
IconService,
__platform_browser_private__.BROWSER_SANITIZATION_PROVIDERS,
],
})
而我们的图标组件的桶。
export * from "./components/icon/icon.configuror";
export * from "./components/icon/icon.service.provider";
export * from "./components/icon/icon.service";
export * from "./components/icon/icon.component";
export * from "./components/icon/icon.module";
通过以不同方式提供IconService来解决此问题。
{
provide: IconService,
useFactory: iconServiceFactory,
deps: [Http, IconConfiguror],
},
和工厂本身
export function iconServiceFactory(http: Http, iconConfiguror: IconConfiguror) {
return new IconService(http, iconConfiguror);
}
我想因为某些原因没有被提供的HTTP(即使HTTP模块是进口的),所以我不得不宣布它作为一个依赖。
我遇到过类似的问题。我通过改变桶中的出口订单来解决这个问题。
基本服务文件:
// dependency.service.ts
@Injectable()
export class DependencyService { }
// dependant.service.ts
import { DependencyService } from '.';
@Injectable()
export class DependantService {
constructor(private dependency: DependencyService) { }
}
继桶导致错误:
// index.ts
export * from './dependant.service';
export * from './dependency.service';
虽然下列作品之一:
// index.ts
export * from './dependency.service';
export * from './dependant.service';
我刚刚经历过这个问题,我想知道你是否知道它为什么会发生? –
@JacquesCornat我还没有调查过它。至少我觉得依赖顺序必须正确。但是,我怀疑装饰者是如何处理的。 – LoganMzz
有时是解决它的单路 - 手动描述参数。这个错误的
static get parameters() { return [Http, IconConfiguror] }
constructor(private http:Http, private iconConfiguror:IconConfiguror) {
一个可能的原因是,如果你不与@Injectable()
装饰你IconService
类。如果这是原因,那么在类声明上添加装饰将修复错误。
为我工作,当我用,而在app.module.ts导入服务下列
{provide: AuthService,
depends: HttpClientModule}
我的问题是,我是从基类继承,和我饰基类与@Injectable 。继承类是应具有@Injectable属性的类,而不是基类。看起来,当编译器看到@Injectable属性时,它会检查以确保构造函数中的所有属性都可以被注入。如果没有,这是一个错误。我通过从该类中删除@Injectable属性来解决此问题。
'构造函数(私有http:Http,私人iconConfiguror:IconConfiguror)' – Alex
@ AJT_82忘了更新,我也尝试过。 – tallkid24
'__decorate'是正确的,他们不应该注入那里。你如何提供IconConfiguror服务? – altschuler