angular 5错误:无法解析服务的所有参数

时间:2017-11-27 05:04:34

标签: angular5

我可以使用一点帮助。

上下文我正在为身份验证服务创建一个角度5模块。

如何将POJO作为参数传递给类?

请参阅下面的答案。

<击> 我需要在此auth服务中使用HttpClient

我收到此错误:

  

错误:无法解析AuthService的所有参数:([object Object],?)。

[object Object]是angular 5 HttpClient

有人可以解释为什么我收到此错误以及如何解决此问题?

@NgModule()

export class AuthtModule {
  static forRoot(params?: iParams) {
    return {
        ngModule: AuthModule,
        provides: [
            HttpClient,
            {
                provide: AuthService,
                useFactory: setupAuthService,
                deps: [ HttpClient, params ]
            }
        ],
        imports: [ HttpClientModule ],
        exports: [ AuthService ]            

    }
  }
}

提前致谢。 干杯

2 个答案:

答案 0 :(得分:0)

我想出了如何做到这一点,因为事实证明问题在于第二个参数(因此问号)不是第一个参数。发生此错误的原因是,为了将参数传递到类中,必须首先将它们转换为可注入的。

这是你如何做到的。

首先使用参数

创建一个类模型

FOO-params.model.ts

export class FooParams {
  public foo1: string;
  public foo2: number;
}

然后在Module类属性中设置类FooParams以使用作为POJO的值

app.module.ts

import { HttpClientModule, HttpClient } from '@angular/common/http';
import { FooParams } from './foo-params';

@NgModule({
  imports : [ HttpClientModule ],
  providers: [{
   HttpClient
   { provider: FooParams, useValue: params },
   { 
     provider: BarService,
     useFactory: setupBarService
     deps: [ HttpClient, FooParams ]
   }
  }]
})
export class AppModule {}

这就是消耗pojo的类看起来像。 bar.service.ts

import { HttpClient } from '@angular/common/http';
import { FooParams } from './foo.service.ts';

expecto function setupBarService(http: HttpClient, params: FooParams) {
  return new BarService(http, params);
}

@Injectable()
export class BarService {
  constructor(http: HttpClient, params: FooParams) {}

  //DO STUFF
}

答案 1 :(得分:0)

尝试通过将import 'core-js/es7/reflect';导入polyfills.ts