在哪里阅读Angular 2应用程序中的全局设置?

时间:2018-02-13 11:02:33

标签: angular

我在应用程序中有全局设置,存储在本地存储中。

我需要编写在加载应用程序后从本地存储加载设置时启动的服务。

在哪做?

我可以编写服务并在每个组件中调用它,但这不方便。

2 个答案:

答案 0 :(得分:2)

您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但请确保该服务在应用程序中是单例。您的服务的使用在您的应用程序中共享。

答案 1 :(得分:2)

您可以创建resolve并在应用程序加载时调用服务一次

参见示例how to use

您也可以创建getter和setter方法,以便轻松访问每个组件

例如

// import
export class AppConfigService{
  public token: string;
  Constructor(private http: Http){
  }


 get token(): string{
        return this.token;
    }

  getAppConfig(): Promise<any> {
        return this.http.get('apiBaseUrl')
            .toPromise()
            .then(resp => {
               this.token = res.token;
            }).catch(function (err: any): any {
                Observable.throw(err);
            });
    }
}

解决方案2

将此功能放入app模块

export function loadAppConfig(appService: AppConfigService): Function {
    return () => appService.getAppConfig();
}

将此添加到提供者

providers: [
        AppConfigService,
        {
            provide: APP_INITIALIZER,
            useFactory: loadAppConfig,
            deps: [AppConfigService],
            multi: true
        },
]