Angular2-将HTTP注入自定义服务时出现“无法解析所有参数"错误 [英] Angular2 - 'Can't resolve all parameters' error while injecting http into a custom service

查看:160
本文介绍了Angular2-将HTTP注入自定义服务时出现“无法解析所有参数"错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经构建了 ErrorHandlerLogger ,该服务可以扩展ErrorHandler并将错误消息记录到远程存储库中.

I have built an ErrorHandlerLogger which is a service which extends ErrorHandler and logs error messages into a remote repository.

ErrorHandlerLogger 需要 HttpModule 提供的Angular http 客户端.

ErrorHandlerLogger requires the Angular http client provided by the HttpModule.

ErrorHandlerModule 中,导入 HttpModule 并将 ErrorHandlerLogger 定义为提供程序.

In the ErrorHandlerModule I import HttpModule and define ErrorHandlerLogger as provider.

AppModule 中,导入 ErrorHandlerModule .

启动应用程序时,出现以下错误消息

When I launch the app I get the following error message

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 { }

非常感谢您的帮助

推荐答案

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

这篇关于Angular2-将HTTP注入自定义服务时出现“无法解析所有参数"错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆