6
  constructor(private http: HttpClient) {
  }
  ngOnInit() {
   this.http.get('url').subscribe(data => {
     console.log(data);
     console.log(data.login);
   });
  }
}

在这里,我可以在控制台中使用登录名查看数据,但我收到一条错误消息,指出数据上不存在属性登录名。有没有不使用界面的解决方法?因为我想要获取的数据非常庞大,以后可能会修改,那么有没有更好的方法呢?

4

1 回答 1

5

使用时的文档状态HttpClient...

 this.http.get('/api/items').subscribe(data => {
   // Read the result field from the JSON response.
   this.results = data['results'];
 });

在上面的示例中,data['results']字段访问很突出,因为您使用括号表示法来访问结果字段。如果您尝试编写data.results,TypeScript 会正确地抱怨从 HTTP 返回的 Object 没有results属性。这是因为在HttpClient将 JSON 响应解析为对象时,它不知道该对象是什么形状。

因此,您的选择是输入您的回复(文档和我都建议),或者然后使用括号表示法。

输入响应将创建一个接口/类,您告诉它这是您对请求的期望:

export interface MyResponse {
  results: // your type here
}

this.http.get<MyResponse>('/api/items').subscribe(data => {
   this.results = data.results;
 });
于 2017-11-04T10:33:22.313 回答