Angular2 Subcribe变量undefined

时间:2017-01-19 16:28:36

标签: angular

我遇到了以下问题:

我尝试从JSON获取数据并将其带到我的前端。

要连接到JSON,我在service.ts

中有以下代码
getSentiment(text: string){
    var sentimentdata = {
        'text': text
    };

    var headers = new Headers();
    headers.append('Content-Type', 'application/json');

    return this.http.post('http://localhost:5000/analyse', sentimentdata, { headers: headers })
        .map((response: Response) => {
            console.log(response.json());
            response.json();
        })
}

我在控制台中获得以下内容:

Object { analysis: "0.49527" }

我通过以下方式在component.ts中调用该服务:

this.service.getSentiment(this.model.text).subscribe(
    res => {
        this.score = res;
            console.log(this.score);
        },
        error => {
            console.log(error);
        }
);

这给了我以下输出:undefined

我一直在疯狂如何摆脱未定义。它是如何在服务方面提供的,而不是在我的组件中?

1 个答案:

答案 0 :(得分:2)

问题在于你的箭头功能:

.map (res => res.json()) <- automatic return

然而:

.map((response: Response) => {console.log(response.json());response.json();}) <- curly brackets in your arrow function, NO automatic return. 

所以

.map((response: Response) => {console.log(response.json());return response.json();}) 

会解决它。