2017-08-10 63 views
1

我想用环境文件中定义的键构建一个对象,因此键将根据环境而改变。Angular 4/Typescript中的动态键值赋值

import { environment } from '../environments/environment' 

export abstract class AbstractAPIService { 
    fieldValues[environment.stateDropdownID] = ['Al', 'AK', 'CT', ....] 
} 

然而,编译器是给下面的错误:'=' expected.

是否有可能做这样的事情在Agnular 4或打字稿带来什么影响?

谢谢!

+1

我想,你就不能在课堂上做到这一点属性部分,但它看起来可能在构造函数中。看看[this](https://plnkr.co/edit/qxYjtLSk0MEkYqqgcDNf?p=preview)是否适合你。 –

+0

这几乎就是我正在寻找的东西。如果你想发布这个例子作为答案,我会接受。 – Mac

+0

听起来不错,发布答案。谢谢! –

回答

3

您将无法在类的Parameter属性中执行此动态键分配,但是您可以在类的构造函数或方法中实现此目的。它的工作是这样的:

import { environment } from '../environments/environment' 

export abstract class AbstractAPIService { 
    fieldValues: object = {}; 

    constructor() { 
     this.fieldValues[environment.stateDropdownID] = ['Al', 'AK', 'CT', ....]; 
    } 
} 

这里是一个展示plunker在一个简单的角度示例应用程序的功能。

希望有帮助!

1

Angular在浏览器中运行,所以没有真正的环境,但是当您在this的答案中构建应用程序时,您可以将env变量插入到配置文件中,或者根据它是否为dev或prod阶段通过使用isDevMode API

+0

提供环境似乎是比在每个组件中导入更好的方法。但是,如果密钥是变量,我仍然不确定如何将键/值对添加到对象 – Mac

1

我在构造函数中推荐这样做亚历山大的建议,但它实际上是可以直接分配给它,如果你真的想:

import { environment } from '../environments/environment' 

export abstract class AbstractAPIService { 
    fieldValues = { 
     [environment.stateDropdownID]: ['Al', 'AK', 'CT', ....] 
    } 
}