从自定义管道返回异步值:Angular4

时间:2017-08-24 16:55:54

标签: angular

我为我的应用程序创建了一个自定义管道,它将用户id作为参数并返回用户名。为了让所有用户我正在进行api通话。因此,我想从api获取用户列表后运行循环。我正在做这样的事情:

 transform(userId: number): any {
  this.userInfoService.getUsers().subscribe(
    data => {
       this.allUsers = data;
       for(let user of this.allUser) { 
        if(user.id === userId) {
         return user.userName;
        }
       }
      return null;
    },
    error => {
      console.log('Error');
    })
}

但是当我使用这个管道时,我在UI上看不到任何价值。我怀疑的问题是异步返回的值。有什么建议可以修复吗?

1 个答案:

答案 0 :(得分:4)

我添加了return并将subscribe更改为map

 transform(userId: number): any {
  return this.userInfoService.getUsers().map(
    data => {
       this.allUsers = data;
       for(let user of this.allUser) { 
        if(user.id === userId) {
         return user.userName;
        }
       }
      return null;
    },
    error => {
      console.log('Error');
    })
}

然后将其与异步管道一起使用

{{userId | myPipe | async}}