Angular2服务不会将结果从http.get返回到Observable到组件

时间:2016-12-02 09:40:16

标签: angular rxjs observable

我正在尝试使用get来设置angular2中的视图。 hava组件和服务

在模板中我有一个seachbutton,它会触发组件上的搜索功能

//component
searchResult : SearchData[];
searchData(){
    this.search.geSearchResultPart1(this.form.searchterm)
        .subscribe(
            searchresult => {
                    this.searchResult = searchresult
                    console.log(  searchresult ); // undefined
                }, 
                err => {
                   console.log(err);
                });
}

在我做的服务中

 getSearchResultPart1(searchWord : string) : Observable<SearchData[]> {
    let fullURL = 'url=http://domain.nl/searchData.php?q='+searchWord;     
    return this.http.get(fullURL)
        .map((res: Response) => { 
            res.json().data as SearchData[]
            console.log(res.json()); // Shows an array with objects
        })
        .catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}

我还包括(以及必要的其他导入)

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

该服务确实在console.log上显示响应,但它不会返回数据。 我搜索并跟随多个tuts,但没有结果。我想我正在做它,但忘了一件小事,但我不知道是什么。

1 个答案:

答案 0 :(得分:2)

如果您将=>{}一起使用,则需要明确return

return this.http.get(fullURL)
    .map((res: Response) => { 
        res.json().data as SearchData[]
        console.log(res.json()); // Shows an array with objects
        return res.json();
    })