代码之家  ›  专栏  ›  技术社区  ›  ItFreak

使用asnyc管道检索HTML数据时的Angular 6问题

  •  1
  • ItFreak  · 技术社区  · 7 年前

    我试图显示来自RESTAPI的数据,该API需要一些时间来映射所需的请求。因此,我尝试了 async 有角度的管道:

      private json: Observable<JsonResponseDTO>;
    
      constructor(private dtoService: PoolDTOServiceService) { }
    
      ngOnInit() {
        this.getPool();
      }
    
      getPool() {
        this.json = this.dtoService.getPools();
      }
    

    以及模板:

    <div *ngIf="json | async as json; else loading">
      <ng-container *ngIf="json.pools.length >=134; else noItems">
        <div *ngFor="let pool of json.pools">
          {{p.name}}
        </div>
      </ng-container>
      <ng-template #noItems>No items</ng-template>
    </div>
    <ng-template #loading>Loading</ng-template>
    

    在很短的时间内,加载模板显示,但随后我得到一个错误:

    ERROR TypeError: "_co.p is undefined"   
    

    在模板中,第7:41行。
    有人能帮我吗?我是否正确使用异步管道?

    2 回复  |  直到 7 年前
        1
  •  4
  •   J. S.    7 年前
     <div *ngFor="let pool of json.pools">
          {{p.name}}
     </div>
    

    你的p是未定义的。你想要的是:

     <div *ngFor="let pool of json.pools">
          {{pool.name}}
     </div>
    
        2
  •  0
  •   nircraft    7 年前

    这个 p.name 将找不到,因为 p 在任何地方都没有定义。你应该修正错误并使用 pool.name :

    <ng-container *ngIf="json.pools.length >=134; else noItems">
        <div *ngFor="let pool of json.pools">
          {{pool.name}}
        </div>
      </ng-container>