Angular2 http响应未定义

时间:2017-08-26 07:53:17

标签: angular2-http

这是我的服务器数据:

[
    {
        "name" : "testname"
    },
    {
        "name" : "testnametwo"
    }
]

我正在尝试使用Angular2 http.get获取此数据。我正在尝试下面的代码:

private _url : string = "appone/api/user.json"

    user = []

    constructor(private http : Http) { }

    getUsers() {
        let res = this.http.get(this._url).map((response : Response) => {
            return response.json()
        })
        res.subscribe((data) => {
            this.user = data
        })

        alert(this.user.name)
    }

但我没有得到任何结果。我不知道我错在哪里。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

代码订阅响应,并在this.user异步返回时设置http.get。因此alert会在设置user之前触发。

答案 1 :(得分:0)

您的提醒需要放在订阅中。

getUsers() {
        let res = this.http.get(this._url).map((response : Response) => {
            return response.json()
        })
        res.subscribe((data) => {
            this.user = data;
           alert(this.user.name); 
        })

    }

说明:您的API可能需要一些时间才能返回数据,并且会异步调用它。因此,即使在API返回您的数据之前,也会调用您的警报。

Subscribe仅在从API获取数据时才会被调用,因此它是一个适当的记录位置。另外,请将记录错误视为一种良好做法。