为什么我不能在Angular 2中用括号表示法定义我的变量

时间:2017-09-30 06:05:21

标签: angular typescript

我一直在尝试使用括号表示法定义一个变量,只是为了熟悉它是如何工作的,并没有得到任何结果。不幸的是,我正在使用Plunkr的带有键盘的平板电脑,所以我无法打开控制台,看看出了什么问题,希望有人能够发现问题而不需要来自控制台的错误消息。

我在组件类中的代码目前看起来像这样

var  demoA:string='name';
var  demoB:string='city';
var  demoD:string='';
var  demoC:{[propName: string]:string}= {};

demoC['demoA']= demoD;

认为我正在使用打字稿我最初在变量的开头没有var但我最终决定将其设置为在MDN网站上,但仍然没有得到任何结果,小部件只是在加载时保持不变。我还尝试将this.添加到尝试创建新属性的所有内容中。我的目标是让demoC内部具有name=''的属性。我在这里缺少什么?

这是关于plunker的整个文件

//our root app component
import {Component, NgModule, VERSION} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>
    </div>
    <p>{{demoA}}</p>
    <p>{{demoB}}</p>
    <br />
    <p>{{demoC}}</p>
  `,
})
export class App {
  name:string;

  var  demoA:string='name';
  var  demoB:string='city';
  var  demoD:string='';
  var  demoC:{[propName: string]:string}= {};

  demoC[demoA]= demoD;

  constructor() {
    this.name = `Angular! v${VERSION.full}`
  }
}

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App ],
  bootstrap: [ App ]
})
export class AppModule {}

1 个答案:

答案 0 :(得分:4)

您使用名为string的{​​{1}},而不是变量值。它将创建一个名为demoA的属性。从demoA表示法中删除'',让[]语法评估表达式并从中获取值。

[]

这是TypeScript playground

中的示例

根据您的Plunker代码,您有一些错误

从变量声明中删除demoC[demoA]= demoD; 部分。 将var的赋值运算符放入demoC。它将您的陈述理解为重复变量。

constructor

代码示例

<强> Plunker code example