【问题标题】:Angular2 - 'Can't resolve all parameters' error while injecting http into a custom serviceAngular2 - 将http注入自定义服务时出现“无法解析所有参数”错误
【发布时间】:2016-10-04 08:13:59
【问题描述】:

我已经构建了一个 ErrorHandlerLogger,它是一个扩展 ErrorHandler 并将错误消息记录到远程存储库的服务。

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

ErrorHandlerModule 中,我导入 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 { }

非常感谢任何帮助

【问题讨论】:

    标签: angular angular2-services angular2-modules


    【解决方案1】:
    @Injectable() // <<<=== required if the constructor has parameters 
    export class ErrorHandlerLogger extends ErrorHandler {
    

    【讨论】:

    • 谢谢。正确且超快。
    • 根据 Angular2 风格指南,@Injectable() 应该始终添加到可注射剂中,因为稍后添加参数时很容易忘记(这很常见)。
    • 感谢您拯救我的一天 :)))
    猜你喜欢
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2021-04-17
    • 2017-03-15
    • 2017-06-27
    • 2020-01-02
    相关资源
    最近更新 更多