Javascript 使用forRoot将变量传递给模块
我已经开发了一个库,其中包含Angular中的共享组件,我想在那里传递配置 一切基本上与中的相同: 问题是,我需要将用户传递给这个模块,这个模块在应用程序启动时获取并保存在Redux状态 在导入模块时,是否可以使用forRoot向用户传递observable?也许可以“稍后”通过一些延迟加载将某些内容传递给此模块Javascript 使用forRoot将变量传递给模块,javascript,angular,typescript,redux,Javascript,Angular,Typescript,Redux,我已经开发了一个库,其中包含Angular中的共享组件,我想在那里传递配置 一切基本上与中的相同: 问题是,我需要将用户传递给这个模块,这个模块在应用程序启动时获取并保存在Redux状态 在导入模块时,是否可以使用forRoot向用户传递observable?也许可以“稍后”通过一些延迟加载将某些内容传递给此模块 @select() private user$: Observable<User> @NgModule({ imports: [ LibModule.for
@select() private user$: Observable<User>
@NgModule({
imports: [
LibModule.forRoot({
user: user$
})
...
})
@select()私有用户$:可观察
@NGD模块({
进口:[
LibModule.forRoot({
用户:用户$
})
...
})
我采用了另一种方式——注入抽象服务的实现来获取设置。代码如下:
Lib模块声明:
export interface LibSettings {
user: User;
url: string;
}
export abstract class AbstractLibSettingsService {
abstract getSettings(): LibSettings;
}
@NgModule({
declarations: [...],
imports: [...],
exports: [...]
})
export class LibModule {
static forRoot(implementationProvider: Provider): ModuleWithProviders {
return {
ngModule: LibModule,
providers: [
implementationProvider
]
}
}
}
Lib服务,其中我需要用户:
constructor(private settingsService: AbstractGlassLibSettingsService) {
}
在使用库的应用程序中,带导入的模块声明:
export const LIB_SETTINGS_PROVIDER: ClassProvider = {
provide: AbstractLibSettingsService,
useClass: LibSettingsService
};
@NgModule({
imports: [...
LibModule.forRoot(LIB_SETTINGS_PROVIDER)
],
...
})
最后,应用程序中服务的实现:
@Injectable()
export class LibSettingsService extends AbstractLibSettingsService {
@select() private user$: Observable<User>;
private user: User;
constructor() {
super();
this.user$.subscribe(user => this.user = user);
}
public getSettings(): GlassLibSettings {
...
}
@Injectable()
导出类LibSettingsService扩展了AbstractLibSettingsService{
@select()private user$:可观察;
私人用户:用户;
构造函数(){
超级();
this.user$.subscribe(user=>this.user=user);
}
public getSettings():GlassLibSettings{
...
}
在哪里可以找到解决方案的文档?我很感兴趣的是,我可以在static forRoot
函数中返回imports
。恐怕我不理解你的问题……你能重新表述一下吗?老实说,我想我只是在尝试并想出了这个解决方案。在昨天下午之后,我已经理解了str现在我知道这毫无意义,我很抱歉,杰