У меня есть мой AccountService
определяется следующим образом:Наблюдаемые не тянущие данные с AsyncPipe
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": {} }
Второй ничего не показывает. Мне не хватает ключевого знания, которое удерживает меня и ищет просветления.
Это работает! Можете ли вы немного рассказать о том, почему это необходимо, в вашем ответе? – twilliams
Большое вам спасибо. Отлично. Я даже не думал об этом, потому что использовал Observables с асинхронным каналом, прежде чем это не нужно было делать. Я думаю, потому что они уже были заполнены данными. – twilliams