Angular 2 APP_INITIALIZER

时间:2017-06-16 17:07:20

标签: angular angular2-services

我一直在搜索google的最后一天,我在角度2中有一个关于APP_INITIALIZER的基本问题。官方网站上的文档并不清楚这一点。

APP_INITIALIZER只能在RootModule或任何其他自定义模块上使用?

我有几个延迟加载模块,每个模块都有自己的配置。我想在该模块加载之前加载延迟加载模块的配置。 更具体地说,我使用的是暴露服务的第三方库(服务A)。此服务将ConfigA注入其构造函数中。我使用http从我的服务器获取配置,我想将其映射为ConfigA,它将被注入ServiceA。

2 个答案:

答案 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 }