我正在尝试从一个Web服务(JSON结果)检索数据,并在Angular 2组件中呈现它,使用*ngFor
。这是我的数据:
{
"Columns": [
{"Label": "CodeProduct"},
{"Label": "productfamily_ID"},
{"Label": "description"}
]
}
这是我的Angular组件:
import {Component, View} from 'angular2/core';
import {Http, Response} from 'angular2/http';
import 'rxjs/add/operator/map';
@Component({
selector: 'app',
templateUrl: './app/app.html'
})
export class AppComponent
{
columns: Array<Object> = [];
constructor(private http: Http){}
ngOnInit() {
this.getProducts()
.subscribe(
(columnRemote: Array<Object>) => { this.columns = columnRemote});
};
private _url = 'api/data/product';
getProducts() {
return this.http.get(this._url)
.map((res) => res.json().Columns);
}
}
我的模板:
<h3>Hello StackOverFlow</h3>
<ul>
<li *ngFor="#column of columns">{{column.Label}}</li>
</ul>
我可以看到标题出现了,但是我的列列表没有显示(即使我尝试使用静态字符串,比如在<li>
中写入'Test')。如果我在构造函数中用静态值填充数组,我可以看到数组被显示。在调试器中,我可以看到数据已经正确地检索,但是在这一行:
.subscribe((columnRemote: Array<Object>) => { this.columns = columnRemote});
变量this是类型为Subscriber而不是AppComponent。这正常吗?我做错了吗?我正在使用ES5 TypeScript的Angular2 beta6。
编辑 1:这是调试器为res.json()
显示的内容
<li *ngFor="#col of obj.Columns">...</li>
。 - Bhushan Gadekar.map((res) => res.json().Columns);
- Christophe Gigaxindex.html
文件中添加了angular2-polyfills.js
? - Poul Kruijtangular2-polyfills.js
包含zone.js
,该文件由 Angular 用于确定何时更新数据。 - Lucacox