我的Angular 2.4 Typescript代码中有以下JSON对象
variableJSON =
{
'fQuery': string,
'fQueryRoot': string,
'fQueryRootURL': string,
'fName': string,
'filterJSON': Object
}
filterJSON
对象通过HTTP GET响应(基于Promise)存储,例如:
this.service.get(URL).then(
// whatever is returned from promise is stored in the above JSON
res => this.variableJSON['filterJSON'] = res);
我在数组中推送上面提到的variableJSON
并将其传递给我的子组件,如下所示:
<child-comp *ngFor="let eachFilter of arrayPassingToChild" [filterProperties]="eachFilter">
<!-- assuming eachFilter is the exact variableJSON mentioned Above passed to child -->
</child-comp>
当我执行控制台登录父组件时,推送到阵列的对象完全显示filterJSON
对象。相反,当我在控制台上登录filterProperties
时,这是子组件中的@Input()
:
我得到所有的字符串即。 fQuery
..等等,但filterJSON
对象完全为空。
可能的原因是什么?
我认为创建的Array比HTTP GET返回的Promise更早传递,也许filterJSON
可能是空的。
子组件只是CSS Box,它与上面提到的JSON中的Data一起显示。在一般情况下,只需点击特定位置即可显示CSS框。
答案 0 :(得分:1)
只要您传递真实数据而不仅仅是数据接口,您就可以获得它。
这是一个可以离开的人。
http://plnkr.co/edit/4TRbOejaUmhDmI170aPI?p=preview
应用组件
@Component({
selector: 'my-app',
template: `
<div>App Started</div>
<child-component [data]="point" *ngFor="let point of data"></child-component>
`,
})
export class AppComponent {
constructor() {
this.data = [{
point : 0
},{
point : 1
},{
point : 2
}]
}
}
子组件
@Component({
selector: 'child-component',
template: `
<div>Got Data Point {{data.point}}</div>
`,
})
export class ChildComponent {
@Input() data;
constructor() {
}
}
输出
App Started
Got Data Point 0
Got Data Point 1
Got Data Point 2