这里,这是我的观察结果:
userLogin(formData: Object):Observable<Response> {
return this.http.post(apiURL + '/api/logon', formData)
.map((response: Response) => {
return response.json();
}
})
}
然后我在某个地方订阅如下:
this.auth.userLogin(forData)
.subscribe((result) => {
console.log(result); // this logs the response from server object
// console.log(result.username) doesn't work WHY?
// Error: Property 'username' does not exist on type 'Response'
})
那么我做错了什么?
编辑:
Console.log 输出:
Object {
pappassword:"2f636cc3f8ffeda00dfe448fc483ce3"
success:true
uamip:"192.168.182.1"
uamport:"3990"
username:"jh"
userurl: "http://www.gstatic.com/generate_20"
}
最佳答案
userLogin 方法的返回类型应为 Observable<T>
,这里 T 代表您的响应数据类型/接口(interface)。您可以使用响应数据模型创建一个接口(interface)并将其用作您的数据类型。
interface UserInterface {
pappassword: string
success: boolean
uamip: string
uamport: string
username: string
userurl: string
}
并在您的 userLogin 方法中:
userLogin(formData: Object):Observable<UserInterface> {
...
}
我们可以只使用Observable<any>
但这是 TypeScript 的最佳实践。
关于javascript - Observable 已订阅,响应已返回,无法访问字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42089158/