数据来自 API,但不显示。 Angular 9 ABP 框架

Posted

技术标签:

【中文标题】数据来自 API,但不显示。 Angular 9 ABP 框架【英文标题】:Data come from API, but does not display. Angular 9 ABP framework 【发布时间】:2021-03-15 05:58:08 【问题描述】:

我想在我的选择控件中填充数据,该控件位于标题子组件中,但数据来自 API,但不显示。

.

  ngOnInit() 
    this._assingedSiteService.getAssignedSitesForLogInUser().subscribe(
      (res) => 
        this.sites = res;
        console.log(this.sites);
      ,

      (error) => 
        console.log(error);
      
    );
  
<li class="nav-item">
  <select class="form-control">
    <option *ngFor="let site of sites">
      site.siteName | json
    </option>
  </select>
</li>

【问题讨论】:

【参考方案1】:

在渲染页面之前,您需要等待接收到的数据。你可以做两件事:

    使用布尔值和ngIf 指令:

     loadingData = true;
     ngOnInit() 
         this._assingedSiteService.getAssignedSitesForLogInUser().subscribe((res) => 
             this.sites = res;
             console.log(this.sites);
             this.loadingData = false;
           , (error) => 
             console.log(error);
           
         );
     
    

    模板

       <select class="form-control" *ngIf="!loadingData">
         <option *ngFor="let site of sites">
           site.siteName | json
         </option>
       </select>
    

    我更喜欢,如果您的订阅中没有逻辑,请在模板中使用 async 管道:

     sites$: Observable<Site>;
    
     ngOnInit() 
        this.sites$ = this._assingedSiteService.getAssignedSitesForLogInUser();
     
    

    模板:

       <select class="form-control">
         <option *ngFor="let site of sites$ | async">
           site.siteName | json
         </option>
       </select>
    

【讨论】:

以上是关于数据来自 API,但不显示。 Angular 9 ABP 框架的主要内容,如果未能解决你的问题,请参考以下文章

如何从HTML值更新Angular .ts文件中的值?

如何在 Angular 5 中显示来自 Json Mapper 的数据?

如何在 Angular 中轻松显示来自 MongoDB 的代码数组?

Angular 5,来自 API 的 JSON 数组

如何在 Angular 2 的同一服务中将一些硬编码数据与 API 一起使用?

来自 Angular 7 应用程序的第 3 方 api 请求的 chrome CORB 问题