我已经附上了我的angular2代码片段的plunker链接。我想要打印JSON中的一个字段,但无法打印,因为最初我的对象是空的,并且通过Promise进行填充。
这是我的组件文件。
import {Component, NgModule, OnInit} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
class MyData {
xyz : MySubData;
}
class MySubData {
name : string;
}
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
{{abc.xyz.name}}
</div>
`,
})
export class App implements OnInit {
abc : MyData = null;
constructor() {
this.name = 'Angular2'
}
ngOnInit() {
setTimeout(() => {
this.abc = new MyData();
this.abc.xyz = new MySubData();
this.abc.xyz.name = "Binita";
}, 2000);
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
当我从模板中删除行{{abc.xyz.name}}
时,它可以正常运行。
我的代码中使用了setTimeOut,因为我从Promise(即异步调用)中获取数据。
我可以理解最初abc
是null
,我的代码无法找到abc.xyz.name。但我不想放任何if条件来检查。因为我在JSON中有几个属性,并且为每个属性编写if条件是不可能的。
早期在AngularJS 1中,如果abc为null,则会自动替换为空字符串。我想在Angular2中做同样的事情,请给建议。
下面是plunker