繁体   English   中英

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

[英]Angular 5 How to load global variables from assets

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

因此,通过app.component中的此GET调用:

 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]

您可以通过Angular依赖注入从应用程序的任何位置访问Globals实体。

设置全局变量绝不是一个好主意,但是...很大程度上取决于项目的情况。 当我们谈论使用全局变量时,您和您的同事需要百分百确定您的工作-例如,确保您的变量不会因其他人而改变状态,因为应用程序可能会崩溃。 在这里,您拥有Wiki-为什么全局变量不好?全局变量不好-C2 Wiki

让我们回到棱角分明的情况:您可以轻松地创建新的打字稿文件,在其中将拥有全局变量。 请记住使用{ Injectable } from '@angular/core';装饰文件{ Injectable } from '@angular/core'; 比您必须导入它们来指向您的应用程序import { GlobalAssets } from './globalAssets '开始import { GlobalAssets } from './globalAssets ' 在提供providers: [GlobalAssets ]提供providers: [GlobalAssets ]注册源providers: [GlobalAssets ] 毕竟,您可以通过IoC在组件中引用GlobalAssets。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM