Me gustaría usar el valor del proveedor definido en otro módulo. Aquí hay un ejemplo:
aplicación.módulo.ts
... import { ThemeModule } from '../shared/modules/theme/theme.module'; ... @NgModule({ declarations: [ RootComponent, LoginScreenComponent, ], imports: [ BrowserModule.withServerTransition({ appId: 'serverApp' }), BrowserAnimationsModule, AppRoutingModule, ConfigModule, ThemeModule, .... ], providers: [ ... { provider: "THEME_NAME", useValue: "VALUE" }, ], bootstrap: [RootComponent] }) export class MDMToolModule {}tema.módulo.ts
import { NgModule } from '@angular/core'; import { ThemeService } from './services/ThemeService'; @NgModule({ imports: [], declarations: [], providers: [ {provide: "ThemeService", useFactory: (THEME_NAME) => { return new ThemeService(THEME_NAME) }}, ], exports: [] }) export class ThemeModule {}¿Existe la posibilidad de pasar VALUE desafiado no en el módulo como el ejemplo anterior ( NOMBRE DEL TEMA )?
si está proporcionando valor en el módulo raíz, también estará disponible para todos los demás módulos, por lo que simplemente puede solicitar ese valor utilizando el decorador Inject como este:
@Injectable() export class ThemeService { constructor(@Inject("THEME_NAME") theme: string) {} } de lo contrario, puede importar su MDMToolModule dentro ThemeModule aunque, a juzgar por el código que proporcionó, asumo que este MDMToolModule es su módulo raíz, también puede usar el token de inyección para evitar el uso de esas cadenas mágicas como esta:
const ThemeName = new InjectionToken("token to inject theme name");y luego utilícelo dentro de theme.module.ts
@NgModule({ providers: [ { provide: ThemeName, useValue: "DarkKnight" }, ThemeService ] }) export class ThemeModule {}tema.servicio.ts
@Injectable() export class ThemeService { constructor(@Inject(ThemeName) theme: string) {} }