我的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": {} }
第二个没有显示任何内容。我在这里错过了一些关键知识,这些知识让我退缩,寻找启蒙。
答案 0 :(得分:3)
如果user
作为一个可观察对象回复你并且你可以订阅它,你可以尝试这样的事情{{ ( user | async )?.firstName }}
首先,您需要通过user
管道传递async
observable。
如果有可用的数据,您可以将user.firstName
称为常规变量。