Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular 2应用程序中从何处读取全局设置?_Angular - Fatal编程技术网

在Angular 2应用程序中从何处读取全局设置?

在Angular 2应用程序中从何处读取全局设置?,angular,Angular,我在应用程序中有全局设置,这些设置存储在本地存储中 我需要写的服务,是在加载应用程序后启动从本地存储加载设置 在哪里做 我可以编写服务并在每个组件中调用它,但这并不方便。您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但要确保服务在整个应用程序中都是单例的。服务的使用在应用程序中共享。您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但要确保服务在整个应用程序中都是单例的。服务的使用在应用程序中共享。您可以在应用程序加载时创建并调用服务一次 参见示例 您

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

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

在哪里做


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

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

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

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

参见示例

您还可以创建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);
            });
    }
}
将此添加到提供程序中

providers: [
        AppConfigService,
        {
            provide: APP_INITIALIZER,
            useFactory: loadAppConfig,
            deps: [AppConfigService],
            multi: true
        },
]
您可以在应用程序加载时创建并调用服务一次

参见示例

您还可以创建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);
            });
    }
}
将此添加到提供程序中

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

那么,我需要在每个组件中导入此服务,以及如何提供单例服务?您只需要将其添加到主模块的提供程序中-在大多数情况下,它是AppModule,在此之后,将其注入到您想要使用它的每个组件中,将只返回创建的实例,但我需要在f5硬加载页面后立即调用此服务,是否加载了它?为什么不。当您刷新时,它将再次创建组件并将服务注入itSo,然后我需要在每个组件中导入此服务,以及如何提供单一服务?您只需将其添加到主模块的提供程序中-在大多数情况下,它是AppModule,在此之后,将其注入到您想要使用它的每个组件中,将只返回创建的实例,但我需要在f5硬加载页面后立即调用此服务,是否加载了它?为什么不。当您刷新时,它将再次创建组件并将服务注入其中,但我需要在通过F5硬加载页面后立即调用此服务。我可以在NgMOdule加载此服务一次吗?我可以在NgModel的全局提供程序中插入(加载)此服务吗?检查解决方案2。可能有帮助您只需在应用程序模块中写入,但我需要在F5硬加载页面后立即调用此服务。我可以在NgMOdule中加载此服务一次吗?我可以在NgModel的全局提供程序中插入(加载)此服务吗?检查解决方案2。可能有帮助您只需在应用程序模块中编写