2016-10-04 6 views
18

私はErrorHandlerを拡張し、エラーメッセージをリモートリポジトリに記録するサービスであるErrorHandlerLoggerを構築しました。Angular2 - httpをカスタムサービスに注入中に 'すべてのパラメータを解決できません'エラー

ErrorHandlerLoggerHttpModuleをが提供する角度HTTPクライアントが必要です。 ErrorHandlerModule

IはHttpModuleををインポートし、プロバイダーとしてErrorHandlerLoggerを定義します。

AppModule私はErrorHandlerModuleをインポートします。

私はアプリを起動すると、私はここで、次のエラーメッセージ

Uncaught Error: Can't resolve all parameters for ErrorHandlerLogger: (?). 

を取得する私のコード

ErrorHandlerModule

import { NgModule, ErrorHandler } from '@angular/core'; 
import { HttpModule } from '@angular/http'; 

import {ErrorHandlerLogger} from './error-handler-logger'; 

@NgModule({ 
    declarations: [], 
    exports: [], 
    imports: [ 
     HttpModule 
    ], 
    providers: [ 
     {provide: ErrorHandler, useClass: ErrorHandlerLogger} 
    ] 
}) 
export class ErrorHandlerModule {} 

ErrorHandlerLogger

import { ErrorHandler } from '@angular/core'; 
import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
import { Observable }  from 'rxjs/Observable'; 
import './rxjs-operators'; 

export class ErrorHandlerLogger extends ErrorHandler { 
    constructor(private http: Http) { 
     super(); 
    } 

    handleError(error) { 
     // my logic 
    } 

} 

AppModule

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 
import {ErrorHandlerModule} from './error-manager/error-handler.module'; 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    routing, 
    ErrorHandlerModule 
    ], 
    providers: [appRoutingProviders], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

すべてのヘルプは非常に

答えて

51
@Injectable() // <<<=== required if the constructor has parameters 
export class ErrorHandlerLogger extends ErrorHandler { 
+2

感謝を高く評価しています。右と超高速。 – Picci

+2

Angular2スタイルのガイドによれば、後でパラメータが追加されたときに忘れるのは簡単です(これはかなり一般的です)ので、 '@Injectable()'は注射可能変数に常に追加する必要があります。 –

+1

私の日を節約してくれてありがとう:)) – casper123

関連する問題