Angularjs 角形2罐';t解析abcService的所有参数
尝试将配置对象注入服务时收到以下错误消息:Angularjs 角形2罐';t解析abcService的所有参数,angularjs,angular,dependency-injection,Angularjs,Angular,Dependency Injection,尝试将配置对象注入服务时收到以下错误消息: Error: Can't resolve all parameters for abcService: (?, [object Object]). 我遵循了上的文档,但无法使其工作 在我的服务中abc.service.ts我有以下几点: import { IabcConfig } from 'abc.types'; export let ABC_CONFIG = new OpaqueToken('abc.config'); @Injectable(
Error: Can't resolve all parameters for abcService: (?, [object Object]).
我遵循了上的文档,但无法使其工作
在我的服务中abc.service.ts
我有以下几点:
import { IabcConfig } from 'abc.types';
export let ABC_CONFIG = new OpaqueToken('abc.config');
@Injectable()
export class abcService {
private config: IabcConfig;
constructor(@Inject(ABC_CONFIG) config: IabcConfig, private http: Http) {
this.config = config;
}
}
在我的模块中abc.module.ts
:
import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IabcConfig } from '@abc/abc.types';
import { abcService, ABC_CONFIG } from '@abc/abc.service';
export const abcConfig: IabcConfig = {
save: false,
title: 'ABC',
}
@NgModule({
imports: [
CommonModule
]
})
export class ABCModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
o7AuthenticationService,
{ provide: ABC_CONFIG, useValue: abcConfig },
]
};
}
}
我正在使用的重要LIB:
angular@2.4.0
angular2-universal@2.1.0-rc.1
zone.js@0.7.4
在
ABCModule
中为Angular的HttpModule
添加导入
....
@NgModule({
imports: [
CommonModule,
HttpModule
]
})
...
更新:可能我误解了原始代码,但我仍然认为angular无法找到/解析您在
AbcService
的构造函数中使用的HTTP
。除非您没有为此提供一段代码…因此,当使用带有可注入对象的服务的自定义npm包时,至少在webpack.config.ts中,我们必须在外部:includeClientPackages(/@angularclass |@angular |@abc)下添加自定义包@abc
这修复了abc.service中的所有“无法解析参数”错误如果您已导出abc_CONFIG并执行@Inject(AUTH_CONFIG),这是重命名错误还是代码中的真正错误?已更新,为了简单起见,删除了中间的代码,并将其重命名。因此,在得到建议后,我尝试使用其相对路径引用abc.service。令人惊讶的是,这是可行的,但显然不是正确的方式。顺便说一句,应该提到abs.service是它自己的npm包。所以相对路径是“node_modules/abc/abc.service”您是否使用systemjs?“无法解析abc服务的所有参数…”您是否尝试删除其他参数?您确定ABC_CONFIG是问题所在吗?在这种情况下,不会找到HttpModule,因为您可以看到注入的值是类型[object object],但配置对象是类型?这意味着它无法解决。