Javascript Angular 5如何从资源加载全局变量

Javascript Angular 5如何从资源加载全局变量,javascript,angular,Javascript,Angular,在angular 5应用程序中,我需要加载一些全局变量,如principal Url和其他一些内容,我遵循以下示例: 因此,使用这个GET call in app.component: ngOnInit() { this.http.get('assets/config.json') .map(res => res.json()) .toPromise() .then((config) => { // do stuff w

在angular 5应用程序中,我需要加载一些全局变量,如principal Url和其他一些内容,我遵循以下示例:

因此,使用这个GET call in app.component:

 ngOnInit() {
    this.http.get('assets/config.json')
      .map(res => res.json())
      .toPromise()
      .then((config) => {
        // do stuff with the config
        console.log(config)
      });
  }
我可以加载所有变量,但现在我不确定在应用程序中需要它们之前是否加载了所有变量

有没有一种方法可以实现这一点,或者其他方法来加载全局变量? 创建一个文件:
global.ts
来存储我在应用程序中提供的所有变量,这是一个很好的做法吗

有没有一种方法可以实现这一点,或者其他方法来加载全局 变量?创建文件:global.ts以存储 在我的应用程序中提供它的所有变量

是的! 创建一个名为globals.ts的文件

import { Injectable } from '@angular/core';

@Injectable()
export class Globals {
  anyVariable: string = 'test';
}
然后通过在当前组件中导入来访问它

import { Globals } from './globals'
别忘了像这样在应用程序模块中添加依赖项注入

providers: [Globals]
您可以通过角度依赖注入从应用程序的任何点访问Globals实体

有没有一种方法可以实现这一点,或者其他方法来加载全局 变量?创建文件:global.ts以存储 在我的应用程序中提供它的所有变量

是的! 创建一个名为globals.ts的文件

import { Injectable } from '@angular/core';

@Injectable()
export class Globals {
  anyVariable: string = 'test';
}
然后通过在当前组件中导入来访问它

import { Globals } from './globals'
别忘了像这样在应用程序模块中添加依赖项注入

providers: [Globals]

您可以通过角度依赖注入从应用程序的任何点访问Globals实体。

拥有一组全局变量从来都不是一个好主意,但是。。。这在很大程度上取决于您的项目的情况。当我们谈论使用全局变量时,您和您的同事需要百分之百地确定您在做什么——例如,确保您的变量不会因应用程序可能崩溃而被其他人改变状态。这里有维基——为什么全局变量是个坏主意

让我们回到你的角度案例: 您可以轻松地创建新的typescript文件,其中包含全局变量。记得用“@angular/core”中的
{Injectable}装饰你的文件之后,您必须将它们导入到应用程序启动的位置。
import{GlobalAssets}from./GlobalAssets'
。在提供程序中注册源
提供程序:[GlobalAssets]
。毕竟,您可以通过IoC在组件中引用GlobalAssets


它可能会导致一些问题,最好在引导应用程序之前注册并读取必要的文件(配置和其他全局文件,如从其他端点获取必要的数据),但不能百分之百确定Angular 5中是如何更改的。

拥有一组全局变量从来都不是一个好主意,但是。。。这在很大程度上取决于您的项目的情况。当我们谈论使用全局变量时,您和您的同事需要百分之百地确定您在做什么——例如,确保您的变量不会因应用程序可能崩溃而被其他人改变状态。这里有维基——为什么全局变量是个坏主意

让我们回到你的角度案例: 您可以轻松地创建新的typescript文件,其中包含全局变量。记得用“@angular/core”中的
{Injectable}装饰你的文件之后,您必须将它们导入到应用程序启动的位置。
import{GlobalAssets}from./GlobalAssets'
。在提供程序中注册源
提供程序:[GlobalAssets]
。毕竟,您可以通过IoC在组件中引用GlobalAssets


它可能会导致一些问题,最好在引导应用程序之前注册并读取必要的文件(配置和其他全局文件,如从其他端点获取必要的数据),但不能百分之百地确定Angular 5中是如何更改的。

如果要从ts文件中获取设置,请查看此处,这意味着它将包含在构建中。这意味着您必须为每个环境进行单独的构建。这基本上就是环境。[name].ts文件的用途。请看这里如果要从ts文件中获取设置,这意味着它将包含在生成中。这意味着您必须为每个环境进行单独的构建。这基本上就是环境。[name].ts文件在angular Cli中的用途。我了解wiki,但太通用了,我需要在全局文件中进行一些设置,它不能是其他位置,因此,我遵循启动前读取数据的
,这似乎是可行的。如果我们讨论的是全局配置文件,那么最好在应用程序启动前读取一次,以确保在加载组件或服务之前,一切都已就绪。例如,您可以拥有端点的生产/开发ip地址。毕竟,当你想切换时,你只需在配置中更改一个bool标志。我理解wiki,但它太通用了,我需要在我的全局文件中进行一些设置,它不能是另一个地方,因此,我遵循启动前读取数据的
,这似乎是可行的。如果我们讨论的是全局配置文件,那么最好在应用程序启动前读取一次,以确保在加载组件或服务之前,一切都已就绪。例如,您可以拥有端点的生产/开发ip地址。毕竟,当您想要切换时,您只需更改配置中的一个bool标志。是否可以将我的变量导入.js文件?是否可以将我的变量导入.js文件?