2017-12-22 12 views
1

ファイルから特定の構成をロードしたプロジェクトでモジュールをインポートしたい場合、その構成ファイルを実行時に変更することができ、ブラウザに新しい変更がロードされるようにする必要がありますリフレッシュ。角5 - 動的モジュール構成

"forRoot"メソッドでモジュールに設定ファイルのパスを送り、 "load"メソッドを指す "useFactory"という設定を提供することです。この "load"メソッドはちょうどHTTP GETを使用して設定ファイルを取得します。 "ng build --prod --build-optimizer"を実行するまでは、 "ng build"ですべてうまく動作しているように見えますが、これは "シンボル値を静的に解決する際にエラーが発生しました"原因です。

静的な "forRoot"メソッドの内部で "useFactory"を持つプロバイダを使用していて、 "useFactory"が非静的メソッドを指しているためです。これにどのように対処することが可能ですか?これは良いアプローチですか?

これはどのように私の「forRoot」メソッドであると「initConfig」メソッドは次のようになります。私の知る限りでは、あなたがそこに約束を返す必要が

export class JwtSecurityModule { 
    public static forRoot(configPath:string) { 
     return { 
     ngModule: JwtSecurityModule, 
     providers: [ 
      AppConfig, 
      { 
       provide: APP_INITIALIZER, 
       useFactory: initConfig, 
       deps: [AppConfig, configPath], 
       multi: true 
      } 
     ] 
     }; 
    } 
    ... 
} 
... 
export function initConfig(config:AppConfig, configPath: string) { 
    return() => config.load(configPath); 
} 

答えて

1
export function initConfig(config:AppConfig, configPath: string) { 
    return(): Promise<any> => { 
    return new Promise((resolve, reject) => { 
     config.load(configPath) 
     resolve(); 
    }); 
    }; 
} 

おそらく、角度5は、現時点では私のAPP_INITIALIZERを実行していない:(働い

+0

おかげで、私はプロバイダとして設定パスを追加して、「useValue」句を使用して値を送信するために必要な。 –

関連する問題