我正在學習Angular2從$ http GET請求獲取數據。目前,數據並未顯示出來。我認爲這是因爲我的服務在我的組件渲染後傳遞了數據。我做了一些搜索,但仍然沒有得到它。我在代碼中添加了兩個console.log(data)
,這裏是我的控制檯的屏幕截圖。 當使用route.params時,Angular2無法顯示來自http的數據
這是我在ngOnInit()
ARR-detail.component.ts:
import { TbArr } from './../../shared/models/tb_arr';
private data: TbArr;
ngOnInit() {
//method 1
this.route.params
.switchMap((params: Params) => this._dbService.get('MyAPI.php', 'id=' + params['id']))
.subscribe((d:TbArr) => this.data = d)
console.log(this.data);
/**method 2
* this.id = this.route.snapshot.params['id'];
* this._dbService.get('MyAPI.php', 'id=' + this.id)
* .subscribe(d => {
* this.data = d;
* });
**/
/**method 3
* this.route.params.subscribe(params => {
* if (params['id']) { //got the id from url
* this._dbService.get('MyAPI.php', 'id=' + params['id'])
* .subscribe(d => {
* this.data = d;
* });
* }
* });
**/
}
這裏是db.service.ts我GET功能:
get(api: string, options: any) {
return this.dbRequest('get', api, options);
}
dbRequest(method: string, api: string, options: string) {
let observable: any;
const backendUrl_json = 'http://XXX.XX.XX.XX/api/json/';
observable = this.http[method](backendUrl_json + api, {search: options});
observable = observable.map(res => res.json());
console.log(method, backendUrl_update + api, options);
observable.subscribe(
d => { console.log(d); },
e => { console.log(e); }
);
return observable;
}
這裏我的組件html文件:
<table *ngIf="data">
<tbody>
<tr>
<td>ID:</td>
<td>{{data?.id | async}}</td>
</tr>
<tr>
<td>Date:</td>
<td>{{data?.date | async}}</td>
</tr>
</tbody>
</table>
這裏是我的tb_arr具有TbArr接口:
export interface TbArr {
id:number;
date:any;
}
更新我的問題: 該表顯示了網頁上,但沒有數據顯示。
當我在控制檯打開「對象」,我得到這個:
沒有人對此有任何想法?非常感謝你。如果您需要更多信息,請留下評論。
你可以添加你的json的樣子嗎?或者更確切地說,當你使用console.log時數據是怎樣的? – Alex
@ AJT_82我添加了控制檯截圖。 – jmu