Der Knotenmodul sollte nicht von der Umgebungsdatei lesen dankbar. Es gibt keine Garantie, in welcher Dateistruktur sich die Umgebungsdateien des Benutzers befinden oder ob sie sogar Umgebungsdateien enthalten. Daher sollte das node_module völlig unabhängig von den Umgebungsbedingungen sein und stattdessen sollten Sie eine Variable übergeben, wenn Sie das Modul importieren. Dies gibt der Anwendung (und ihren Umgebungsdateien) volle Kontrolle darüber, was das Knotenmodul verwendet.
// app.module.ts
import { environment } from './environments/environment';
@NgModule({
imports: [MyNodeModule.setup(environment.myVar)]
})
export class AppModule {}
Dadurch kann der Benutzer entweder einen statischen Wert oder einen dynamischen Wert aus seinen eigenen Umgebungsdateien übergeben.
aktualisieren
Um die Verfügung, um Ihre node_module in Wert übergeben machen Sie einen InjectionToken
export const MY_TOKEN = new InjectionToken<string>('My passed in token');
verwenden können, um in MyModule
Sie bieten dieses Token und den Wert zuweisen, war übergeben.
@NgModule()
export class MyNodeModule {
static setup(myToken: string) {
return {
ngModule: MyNodeModule,
providers: [{ provide: MY_TOKEN, useValue: myToken }]
}
}
}
Jetzt für den Rest Ihres node_module, um das Token zu verwenden, können Sie es injizieren.
@Injectable()
export class SomeService {
constructor(@Inject(MY_TOKEN) private myToken){}
}
Dies ist ein sehr einfaches stackblitz diese Funktionalität Demonstrieren.
Ich würde die Variable in der Module nicht importieren, sondern einen Config Service, wie diese erstellen https://stackoverflow.com/questions/43193049/app-settings-the-angular-4-way/43193574#43193574 – masterfloda
Danke @LLai für Ihre Antwort. Es klingt gut für mich. Ich habe nie Setup verwendet. Können Sie bitte ein Beispiel geben, wie MyModule diese Variable bekommen kann? –
@MherAghabalyan Ich habe meine Antwort aktualisiert.Ich bin nicht sicher, wie Sie die Umgebungsvariable verwenden müssen, sondern die bereitgestellten Stackblitz-Demos, wie Sie einen Wert an 'MyNodeModule' übergeben können – LLai