ノードモジュールは、直接環境ファイルから読み取るべきではないために感謝されます。ユーザーの環境ファイルがどのファイル構造であるか、環境ファイルがあるかどうかは保証されません。したがって、node_moduleは環境に完全に無関係でなければならず、代わりにモジュールをインポートするときに変数を渡す必要があります。これにより、アプリケーション(とその環境ファイル)は、node_moduleが使用するものを完全に制御することができます。
// app.module.ts
import { environment } from './environments/environment';
@NgModule({
imports: [MyNodeModule.setup(environment.myVar)]
})
export class AppModule {}
これにより、ユーザーは自分の環境ファイルから静的値または動的値を渡すことができます。
更新
あなたのMyModule
あなたはこのトークンを提供し、それにした値を割り当てるにはInjectionToken
export const MY_TOKEN = new InjectionToken<string>('My passed in token');
を使用することができ、あなたのnode_moduleに利用できる値で渡されるようにするには渡された。
@NgModule()
export class MyNodeModule {
static setup(myToken: string) {
return {
ngModule: MyNodeModule,
providers: [{ provide: MY_TOKEN, useValue: myToken }]
}
}
}
node_moduleの残りの部分がトークンを使用するようになったら、それを注入できます。
@Injectable()
export class SomeService {
constructor(@Inject(MY_TOKEN) private myToken){}
}
ここでは、この機能をデモンストレーションする非常に基本的なstackblitzです。
私はモジュール内の変数をインポートするが、このような構成サービス、https://stackoverflow.com/questions/43193049/app-settings-the-angular-4-way/43193574#43193574を作成しないでしょう – masterfloda
お返事ありがとう@LLai。それは私のために良いと思う。私はセットアップを使ったことはありません。 MyModuleがその変数を取得する方法の例を教えてください。 –
@MherAghabalyan私は自分の答えを更新しました。どのように環境変数を使用する必要があるのか分かりませんが、提供されているstackblitzは 'MyNodeModule'に値を渡す方法をデモしています – LLai