angualr2从subscribe返回observable

时间:2017-05-23 15:04:27

标签: angular observable angular-promise angular2-services

让我们来看看这个例子。我试图返回一个可观察的值 从订阅,但不知何故,我得到空值。 这是我的问题:

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>

有人可以帮忙吗?我是以正确的方式做到的吗?

1 个答案:

答案 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。