我一直在尝试使用括号表示法定义一个变量,只是为了熟悉它是如何工作的,并没有得到任何结果。不幸的是,我正在使用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 {}
答案 0 :(得分:4)
您使用名为string
的{{1}},而不是变量值。它将创建一个名为demoA
的属性。从demoA
表示法中删除''
,让[]
语法评估表达式并从中获取值。
[]
中的示例
根据您的Plunker代码,您有一些错误
从变量声明中删除demoC[demoA]= demoD;
部分。
将var
的赋值运算符放入demoC
。它将您的陈述理解为重复变量。
constructor
代码示例
<强> Plunker code example 强>