让我们来看看这个例子。我试图返回一个可观察的值 从订阅,但不知何故,我得到空值。 这是我的问题:
this.userService.getAll().subscribe((userCollection) => {
userCollection.data.forEach((user) => {
let data = {
id: user.id
domainName: this.userService.getDomain(user.id).subscribe(
(domain) => {
console.log(domain.name); // I can see this in console
return Observable.of(domain.name);
}
)
};
this.array.push(data);
});
});
模板:
<div *ngFor="let values of array|async">
{{ values.id }}
{{ values.domainName }} //empty
</div>
有人可以帮忙吗?我是以正确的方式做到的吗?
答案 0 :(得分:2)
您应该使用map()
代替subscribe()
。
subscribe
绑定一个处理程序并返回一个subscription
对象,稍后您可以将其用于unsubscribe()
。
domainName: this.userService.getDomain(user.id).map(
(domain) => {
console.log(domain.name); // I can see this in console
return domain.name;
}
)
此外,您不需要返回Observable
,映射会返回一个observable。