我一直在搜索google的最后一天,我在角度2中有一个关于APP_INITIALIZER的基本问题。官方网站上的文档并不清楚这一点。
APP_INITIALIZER只能在RootModule或任何其他自定义模块上使用?
我有几个延迟加载模块,每个模块都有自己的配置。我想在该模块加载之前加载延迟加载模块的配置。 更具体地说,我使用的是暴露服务的第三方库(服务A)。此服务将ConfigA注入其构造函数中。我使用http从我的服务器获取配置,我想将其映射为ConfigA,它将被注入ServiceA。
答案 0 :(得分:0)
APP_INITIALIZER只能在RootModule或任何其他自定义上使用 模块也是?
由于APP_INITIALIZER
只是一个提供者,因此您可以在任何非延迟加载的模块上注册它。
了解更多here
答案 1 :(得分:0)
正如@yurzui所说: 在惰性模块中使用解析器创建路径路径定义。 在此解析器类中实现resolve函数。 resolve函数可以返回Promise对象,这有助于您实现初始化逻辑。
@Injectable()
export class LocalizationResolve implements Resolve<any> {
constructor(
public localizationConfig: LocalizationConfig) {
}
resolve(route: ActivatedRouteSnapshot) {
return this.localizationConfig.load();
}
}
路线定义:
path: '', component: SecureComponent, resolve: { locale: LocalizationResolve }