Angular 是否可以基于现有服务动态导入模块?
我有一个现有的服务,它是一个服务集合,使用名为Angular 是否可以基于现有服务动态导入模块?,angular,Angular,我有一个现有的服务,它是一个服务集合,使用名为EFFECTS的不透明标记注册。本质上,服务只是共享同一接口的子服务数组 对于每个EFFECTS服务,我想将EffectsModule导入AppModule并将每个服务注入EffectsModule.run()方法 请参阅下文: import { NgModule } from '@angular/core'; import { Actions, EffectsModule } from '@ngrx/effects'; import { Shar
EFFECTS
的不透明标记注册。本质上,服务只是共享同一接口的子服务数组
对于每个EFFECTS
服务,我想将EffectsModule
导入AppModule
并将每个服务注入EffectsModule.run()
方法
请参阅下文:
import { NgModule } from '@angular/core';
import { Actions, EffectsModule } from '@ngrx/effects';
import { SharedModule } from '../shared/shared.module';
import { Account, User } from './models';
import { AccountEffects, UserEffects } from './effects';
import { ApiService } from '../core/services/api.service';
import { EFFECTS } from './tokens';
@NgModule({
imports: [
SharedModule,
{
// HOW??
useFactory: (effects) => effects.map(effect => EffectsModule.run(effect)),
deps: [EFFECTS],
}
],
providers: [
{
provide: EFFECTS,
useClass: UserEffects,
useFactory: (Actions, ApiService) => new AccountEffects(Actions, ApiService, Account),
multi: true,
deps: [Actions, ApiService]
},
{
provide: EFFECTS,
useClass: UserEffects,
useFactory: (Actions, ApiService) => new UserEffects(Actions, ApiService, User),
multi: true,
deps: [Actions, ApiService]
},
],
})
export class AppModule { }
可以这样做吗?不,不可能。这显然是XY问题,但解决方案可能会有所不同。首先,这是一个特定于
@ngrx/effects
及其固有模式的问题。我建议用更多的细节和ngrx的特异性来重新提问,因为这对于不是ngrx/redux专家的开发者来说没有多大意义。不同意。随着生态系统的扩展,其他开发人员可能会遇到这种架构模式。这是框架工作方式所施加的限制。在其他场景中,开发人员不受基于现有服务需求导入模块的限制;这种方法通常不应该被采用,因为它会导致死胡同。不,这是不可能的。这显然是XY问题,但解决方案可能会有所不同。首先,这是一个特定于@ngrx/effects
及其固有模式的问题。我建议用更多的细节和ngrx的特异性来重新提问,因为这对于不是ngrx/redux专家的开发者来说没有多大意义。不同意。随着生态系统的扩展,其他开发人员可能会遇到这种架构模式。这是框架工作方式所施加的限制。在其他场景中,开发人员不受基于现有服务需求导入模块的限制;这种方法通常不应该被采用,因为它会导致死胡同。