2017-11-27 8 views
2

少し助けてもらえます。angular 5エラー:サービスのすべてのパラメータを解決できません。

コンテキスト私は認証サービスのための角度5のモジュールを作っています。

POJOをパラメータとしてクラスに渡すにはどうすればよいですか?

以下の回答を参照してください。

私はこのエラーを取得しています。この認証サービス

内のHttpClientを使用する必要があります。

Error: Can't resolve all parameters for AuthService: ([object Object], ?).

[オブジェクトのオブジェクト]が角張っている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 ]    

    } 
    } 
} 

ありがとうございます。 乾杯します

答えて

0

私はこれが問題であることが分かりましたので、第2パラメータ(したがって疑問符)が最初ではないことが分かりました。このエラーが発生する理由は、パラメータをクラスに渡すために、まずそれらを注入可能にする必要があるためです。

これはあなたのやり方です。

まずのparamsでクラスモデルを作成

のfoo-params.model.tsモジュールのクラス属性で次に

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

はPOJO

ている値を使用するには、クラスFooParamsを設定します

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 
} 
関連する問題