可观察不使用AsyncPipe提取数据

时间:2016-07-18 19:30:06

标签: angular observable

我的AccountService定义如下:

 export class AccountService {
    user: Observable<PlatformUser>;
    isAdmin: boolean;

    constructor(private http: Http) {
        this.getUser();
    }

    private getUser() {
        if (this.user) { return this.user; }
        else {
            this.user = this.http.get("account/userinfo")
                .map(result => {
                    let user: PlatformUser = result.json();
                    user.isAdmin = user.roles.indexOf("InformationTechnology") != -1;
                    this.isAdmin = user.isAdmin;
                    return user;
                });
        }
    }

我从其中一个组件引用它。

export class HomeComponent implements OnInit {
    user: Observable<PlatformUser>;

    constructor(private accountService: AccountService) {
    }

    ngOnInit() {
        this.user = this.accountService.user;
    }
}

在我看来,就像测试一样......我无法提取我期待的数据。如果我订阅事件并将结果分配给变量,一切正常,但我想使用AsyncPipe来避免手动设置它。

{{user | json}}
{{user?.firstName | async}}

第一个用于我的调试目的......它告诉我,我没有撤回我应该的所有数据。它显示的内容如下:

{ "_isScalar": false, "source": { "_isScalar": false }, "operator": {} }

第二个没有显示任何内容。我在这里错过了一些关键知识,这些知识让我退缩,寻找启蒙。

1 个答案:

答案 0 :(得分:3)

如果user作为一个可观察对象回复你并且你可以订阅它,你可以尝试这样的事情{{ ( user | async )?.firstName }}

首先,您需要通过user管道传递async observable。 如果有可用的数据,您可以将user.firstName称为常规变量。