将可观察到的JSON响应转换为角度(打字稿)对象数组

用户名

我有一个服务API,可从Django-REST中提取数据。返回的JSON如下所示:

[
{
    "manufacturer": "Mfg",
    "model": "Model",
},
{
    "manufacturer": "Mfg2",
    "model": "Model2",
}
]

服务API函数getData返回:

return this.httpClient.get(`${this.apiURL}/data/`);

注意我正在Django中使用ListAPIView,并且已经验证了上述URL返回上面显示的JSON对象(尽管我必须添加?format = json才能在Django的APIView之外获取原始数据)。

然后,我有一个角度组件,该组件调用服务API函数将可观察对象转换为对象数组:

export class Data implements OnInit {

private records = Array<object> = [];

...

constructor(private  apiService:  ApiService) {}

ngOnInit() {
  this.getData();
}

public getData() {
 this.apiService.getData().subscribe((data: Array<object>) => {this.records = data});

没有错误或警告,但是当我尝试访问记录数组时,在组件的HTML文件中,该文件的长度始终为0。例如,以下内容将打印“ 0”和一个空表。

<P> {{ records.length }}</P>
<table>
  <tr>
    <th>Manufacturer</th>
  </tr>
  <tr *ngFor="let record of records">
    <td> {{ record.manufacturer }} </td>
  </tr>
</table>

我想念什么?

德博拉

如果使用接口定义模型,然后将该接口用作get调用的通用参数,则HttpClient会自动将响应映射到已定义的结构。

例如:

接口

export interface Product {
  manufacturer: string;
  model: string;
}

数据服务

return this.httpClient.get<Product[]>(`${this.apiURL}/data/`);

零件

private records: Product[];

public getData() {
 this.apiService.getData().subscribe((data: Product[]) => this.records = data);

模板

<div *ngIf="records">
 <p> {{ records.length }}</p>
 ...
</div>

首次出现模板时,异步数据检索过程可能尚未完成。因此,通过ngIf在页面周围放置一个空格,它将不会尝试显示元素,直到检索到数据为止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

角度4,将http响应可观察到的转换为可观察对象

RxJS将可观察到的内容追加到打字稿中的可观察到的数组列表中

打字稿严格模式无法将可观察到的异步分配给primeNg下拉组件

打字稿和微风从查询返回可观察到的数组

可观察到对象数组的映射

如何将 JSON 响应转换为服务中的角度对象数组?

将可观察到的Zip列表转换为另一个可观察到的RxJava2

将奇怪的JSON响应转换为简单对象的数组

如何将Firebase REST API响应转换为打字稿中的数组?

Angular9/rxjs6.5:如何将可观察对象数组转换为可观察对象属性数组?

HTTP可观察到的响应解析为数组

将LiveData转换为可观察到的RxJava

处理json响应可观察到的迅速

RxJS 5,将可观察对象转换为BehaviorSubject(?)

RXJS可观察到的转换数组为多个值

如何将可观察到的内容从有角度的底板传递给父组件

将可观察到的响应合并为一个

将可观察到的嵌套对象映射到另一个对象

角度6:可观察到的HTTPClient

在角度服务中可观察到

ngFor可观察到的角度

从 eventListener 可观察到的角度返回

角度:可观察到的法线阵列

角度2可观察到可观察[]

RxJs数组可观察到的数组

转换可观察到列表

尽管我设法将它们显示在我的打字稿文件上,但无法读取模板中可观察到的Json内容项

将JSON响应转换为Graph.EducationAssignment对象

将 JSON 响应转换为 python 对象