我正在尝试从我的数据库中获取记录,我编写了observables并使用以下代码我没有得到任何记录。可以请某人建议帮助。
我的组件,
import { Injectable } from '@angular/core';
import {Component} from '@angular/core';
import {Http, Response, Headers} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import { IDetails } from './details';
@Component({
templateUrl: './components/search/search.html',
})
@Injectable()
export class Search {
details:IDetails[];
constructor(public http: Http) {
this.http = http;
}
submit(id):any{
var headers = new Headers();
var id = localStorage.getItem('social_id')
headers.append('Content-Type','application/x-www-form-urlencoded')
this.http.get('http://localhost/a2server/index.php/profile/search/'+id,{headers:headers})
.subscribe(
response => { <IDetails[]> response.json(); })
}
}
我正在尝试从我的数据库中获取记录,我编写了observables并使用以下代码我没有得到任何记录。可以请某人建议帮助。
答案 0 :(得分:0)
<强>更新强>
在你对我的回答的评论中,我相信你问为什么使用Observable是什么原因。在您的特定代码中,除了Http对象旨在返回Observables这一事实之外,没有其他理由可以使用。我应该指出,在谈到良好实践时,你的Http呼叫并不是最好的方式。
您的Http调用应该在Service中,而不是直接在Component中。组件应该在您的服务中订阅Observable。这是一个Plunker,演示了如何利用Observable和服务。
export class ComponentOne{
private _videoID:number;
private _searchedItem:IVideo;
constructor(private _videoService:VideoService){
this._videoID = 0;
this._searchedItem = {};
}
componentClick():void{
this._videoService.getVideo(this._videoID).subscribe((data: IVideo) => {
console.log(data);
});
}
}
这是一个非常好的tutorial,我曾经熟悉如何利用Observables。
看起来你只是忘了设置你的详细信息&#34;变量返回结果。我想你只需要调整你的订阅功能看起来像这样(假设你的php调用工作正常)。
response => { this.details = <IDetails[]> response.json(); })