【问题标题】:Wait until subscription data is ready before use it as input等到订阅数据准备好后再将其用作输入
【发布时间】:2018-04-21 11:33:02
【问题描述】:

我一直在开发一项服务,该服务获取我将用作子组件输入的用户列表,问题是组件在用户列表加载完成之前加载,我找到的一个解决方案是添加*ngIf 并验证数组是否不为空。但是,我想知道这是否是我可以达到我想要的结果的最佳方式。这是我的代码:

private getUsersList(): void {
    this.usersService.getUsers().subscribe((response: any[]) => {
        this.usersList = response;
    });
}

这是我的 HTML:

<users-grid 
    *ngIf="usersList"
    [data]="usersList">
</users-grid>`

【问题讨论】:

  • 当 usersList 为空时,您的 &lt;users-grid&gt; 组件有什么问题?最好让该组件正常工作,而不是使用*ngIf
  • 我试图传递给组件的输入未定义。

标签: angular typescript rxjs observable


【解决方案1】:

我可以使用异步管道

TS:

private getUsersList(): void {
    this.usersList = this.usersService.getUsers();    
}; 

HTML:

<users-grid *ngIf="usersList | async; let list"
      [data]="list">
</users-grid>

【讨论】:

  • 这里不需要*ngIf,只需使用异步管道即可。
  • 如果我使用它,我不会收到任何错误,但也不会显示任何数据。
猜你喜欢
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多