2016-12-07 107 views
3

我试图在单独的模块内创建可重用服务,很像Angular 2's styleguide。但是我得到,当我尝试使用其他服务范围内的服务的错误:从Angular 2中的另一个模块导出服务

Uncaught Error: Can't resolve all parameters for AttendanceSummaryService:

这里是我的核心模块:

import { NgModule, Optional, SkipSelf } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { throwIfAlreadyLoaded } from './module-import-guard'; 
import { HttpClientService } from './httpClient.service'; 
import { HttpModule } from '@angular/http'; 

@NgModule({ 
    imports: [ 
     CommonModule, 
     HttpModule 
    ], 
    exports: [], 
    declarations: [], 
    providers: [HttpClientService] 
}) 
export class CoreModule { 
    constructor(@Optional() @SkipSelf() parentModule: CoreModule) { 
     throwIfAlreadyLoaded(parentModule, 'CoreModule'); 
    } 
} 

HttpClientService

import { Injectable } from '@angular/core'; 
import { Http, Headers } from '@angular/http'; 

@Injectable() 
export class HttpClientService { 

    constructor(private http: Http) { } 

    createAuthorizationHeader(headers: Headers) { 
     headers.append('Authorization', 'Bearer ' + ''); 
    } 

    get(url) { 
     let headers = new Headers(); 
     this.createAuthorizationHeader(headers); 
     return this.http.get(url, { 
      headers: headers 
     }); 
    } 

    post(url, data) { 
     let headers = new Headers(); 
     this.createAuthorizationHeader(headers); 
     return this.http.post(url, data, { 
      headers: headers 
     }); 
    } 
} 

和我进口核心模块的app.module:

import { NgModule, ApplicationRef } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { HttpModule } from '@angular/http'; 
import { AppComponent } from './app.component'; 
import { AttendanceSummaryService } from './home/attendance-summary.service'; 
import { CoreModule } from './core/core.module'; 
import { HttpClientService } from './core/httpClient.service'; 

import {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms'; 


@NgModule({ 
    bootstrap: [AppComponent], 
    declarations: [ 
    AppComponent, 
    AttendanceSummaryComponent, 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    ReactiveFormsModule, 
    HttpModule, 
    CoreModule 
    ], 
    providers: [ 
    HttpClientService, 
    AttendanceSummaryService  

    ] 
}) 
export class AppModule { 
    constructor(public appRef: ApplicationRef) { } 
} 

,并消耗了HttpClientService服务:

import { Injectable } from '@angular/core'; 
import { Observable } from 'rxjs/Rx'; 
import { AttendanceSummary } from './attendance-summary.model'; 
import { Http, Response, Headers, RequestOptions } from '@angular/http'; 
import { HttpClientService } from '../core/httpClient.service'; 


Injectable() 
export class AttendanceSummaryService { 

    private apiBaseUrl = '/api/v1/agency/attendances/'; 
    constructor(private http: HttpClientService) { } 
} 

任何想法?

谢谢。

回答

0

我觉得你得到的错误,因为你忘@Injectable

import { Injectable } from '@angular/core'; 
import { Observable } from 'rxjs/Rx'; 
import { AttendanceSummary } from './attendance-summary.model'; 
import { Http, Response, Headers, RequestOptions } from '@angular/http'; 
import { HttpClientService } from '../core/httpClient.service'; 

@Injectable() 
export class AttendanceSummaryService { 

    private apiBaseUrl = '/api/v1/agency/attendances/'; 
    constructor(private http: HttpClientService) { } 
} 
相关问题