노드 모듈은 직접 환경 파일에서 읽을 안에 감사 할 것이다. 사용자의 환경 파일이 어떤 파일 구조인지 또는 환경 파일이 있는지 여부는 보장 할 수 없습니다. 따라서 node_module은 환경에 전혀 영향을 미치지 않아야하고 대신 모듈을 가져올 때 변수를 전달해야합니다. 이것은 node_module이 무엇을 사용하는지에 대한 완전한 제어권을 응용 프로그램과 환경 파일에 제공합니다.
// app.module.ts
import { environment } from './environments/environment';
@NgModule({
imports: [MyNodeModule.setup(environment.myVar)]
})
export class AppModule {}
이렇게하면 사용자가 자신의 환경 파일에서 정적 값이나 동적 값을 전달할 수 있습니다.
업데이트
당신의 InjectionToken
export const MY_TOKEN = new InjectionToken<string>('My passed in token');
를 사용할 수있는 귀하의 node_module 사용할 수 값 전달 확인하기 위해 MyModule
이 토큰을 제공하고 그것을 있던 값을 할당 건네 받음.
@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