我为我的应用程序创建了一个自定义管道,它将用户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上看不到任何价值。我怀疑的问题是异步返回的值。有什么建议可以修复吗?
答案 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}}