如何以角度显示从api获取的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以角度显示从api获取的数据相关的知识,希望对你有一定的参考价值。

从api获取的数据没有显示在屏幕上,但我在控制台中获取数据。

data.service.ts

    const httpOptions = {
      headers:new HttpHeaders({'Content-Type':'application/json'})
     };

    @Injectable()

    export class DataService {

    constructor(private http: HttpClient) {}
    getuserdetails(){
    return this.http.get<any> 
    ('http://jsonplaceholder.typicode.com/users/1')
    .pipe(map(item => {
        return item;
    }));
    }
   }

information.component.ts

 export class InformationComponent implements OnInit {
    dataItem:any = {} 

    constructor(private data: DataService) {
    this.data.getuserdetails().subscribe(item=>{
    console.log(item);
    this.dataItem=item;
  });
   }

  ngOnInit() {
  }

 }

information.component.html

<div *ngIf="dataItem?.length>=0">           
 <div *ngFor='let x of dataItem'>

   {{x.name}}

 </div>
 </div>

在这里,我在控制台中获取用户1的详细信息,但它没有显示在主屏幕上。

答案

尝试将代码放入ngOnInit

ngOnInit(){
 this.data.getuserdetails().subscribe(item=>{
  console.log(item);
  this.dataItem=item;
 });
}

并通过做验证在HTML中

<div *ngIf="dataItem">
   {{dataItem |json }}
</div>

你的*ngFor不会工作,因为它不是一个阵列

我认为这应该有效。 constructor是打字稿的东西。尝试在Angular生命周期钩子中进行make API调用

另一答案

让我们看看问题是什么:

首先你试图得到dataItem的长度,而它不是一个数组。如果要检查长度,请确保像这样dataItem = []初始化dataItem

<div *ngIf="dataItem?.length>=0">           

第二,你试图迭代(循环)dateItem,而它不是一个数组。如果您按照上面第一个项目中的说明初始化它,您将被允许这样做

 <div *ngFor='let x of dataItem'>

如果您修复这些,您将能够在模板中看到数据

看看这个工作示例https://stackoverflow-55772639.stackblitz.io

以上是关于如何以角度显示从api获取的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历从 REST API 获得的响应对象并以角度 2 在视图中显示数据

如何通过 API 调用从 azure 容器中获取 blob 数据?

如何从 Firebase 获取数据到 Recyclerview 中的片段?

如何从片段中的 JSON 响应中的对象获取数据

在继续之前如何以角度执行所有承诺?

如何从设置中获取数据并发送到此片段