Angular Modules:问题创建纯服务模块。问题解决参数

时间:2017-11-03 11:15:03

标签: javascript angular angular-module angular2-ngmodel

我正在创建一个Angular 4模块,其中包含服务/提供程序。 目标是任何导入模块的项目都能够注入服务。

目前解决该服务的参数问题,特别是来自Http的{​​{1}}。

堆栈追踪:

@angular/http

如果我将Uncaught Error: Can't resolve all parameters for CommonService: (?, [object Object], [object Object]). at ZoneAwareError (eval at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:20), <anonymous>:2571:38) at syntaxError (compiler.es5.js:1694) at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getDependenciesMetadata (compiler.es5.js:15925) at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getTypeMetadata (compiler.es5.js:15793) at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getInjectableMetadata (compiler.es5.js:15779) at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getProviderMetadata (compiler.es5.js:16070) at compiler.es5.js:15999 at Array.forEach (<anonymous>) at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getProvidersMetadata (compiler.es5.js:15959) at compiler.es5.js:15534 at Array.forEach (<anonymous>) at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15525) at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26958) at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._compileModuleAndComponents (compiler.es5.js:26931) at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler.compileModuleAsync (compiler.es5.js:26860) 装饰器添加到@Inject参数,它不再给我解决http参数的错误,而是解决了{{1}的问题在我的CommonService中。我的CommonService会导入AppComponent

堆栈追踪:

AppModule

任何想法我做错了什么?

这是Angular服务模块:

CommonServiceModule

这是服务:

Uncaught Error: Can't resolve all parameters for AppComponent: (?).
    at ZoneAwareError (eval at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:20), <anonymous>:2571:38)
    at syntaxError (compiler.es5.js:1694)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getDependenciesMetadata (compiler.es5.js:15925)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getTypeMetadata (compiler.es5.js:15793)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNonNormalizedDirectiveMetadata (compiler.es5.js:15388)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getEntryComponentMetadata (compiler.es5.js:16047)
    at compiler.es5.js:15629
    at Array.map (<anonymous>)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15629)
    at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26958)
    at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._compileModuleAndComponents (compiler.es5.js:26931)
    at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler.compileModuleAsync (compiler.es5.js:26860)
    at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_._bootstrapModuleWithZone (core.es5.js:4536)
    at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_.bootstrapModule (core.es5.js:4522)
    at Object.../../../../../src/demo/main.ts (main.ts:11)

我的app组件使用模块:

import { NgModule, ModuleWithProviders } from '@angular/core';
import { HttpModule, Http } from '@angular/http';
import { CommonModule} from '@angular/common';
import { CommonService } from './Common.service';
import { ServiceConfiguration } from '../service-config.model';
import { CommonServiceConstants } from './Common.constants';

export * from './Common.service';

@NgModule({
    imports: [
        CommonModule,
        HttpModule
    ]
})
export class CommonServiceModule {
    static withConfiguration(defaultHeaders: { [key: string]: string }, commonConfig: ServiceConfiguration): ModuleWithProviders {
        return {
            ngModule: CommonServiceModule,
            providers: [
                CommonService,
                { provide: CommonServiceConstants.CommonConfigKey, useValue: commonConfig },
                { provide: CommonServiceConstants.DefaultHeaders, useValue: defaultHeaders }
            ]
        };
    }
}

0 个答案:

没有答案