2017-05-05 58 views
0

我在組件$place$premium中有兩個可觀察對象,但它們不同,模板需要它們兩個來解析或頁面被認爲是「加載」。使用* ngIf來解析觀察對象

在我的模板中,我使用的是*ngIf="($place | async); else loading; let place",它適用於地方,但我很難找出如何在解析後將$premium分配給變量。

我已經嘗試添加只是做一些像*ngIf="($place | async) && ($premium | async); else loading; let place; let premium"但它會打破地方和溢價的任務。

有沒有更好的方法來處理這個問題?

回答

2

你可以用combineLatest創建一個新的可觀察到這樣的:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div *ngIf="placeAndPremium$ | async as placeAndPremium"> 
     {{ placeAndPremium.place | json }} 
     {{ placeAndPremium.premium | json }} 
    </div> 
    `, 
}) 
export class App { 
    public place$: Observable<any>; 
    public premium$: Observable<any>; 
    public placeAndPremium$: Observable<any>; 

    constructor() { 
    this.place$ = Observable.of({somePlace: true}).delay(1000); 
    this.premium$ = Observable.of({somePremium: true}).delay(2000); 
    this.placeAndPremium$ = this.place$.combineLatest(this.premium$).map(x => ({place: x[0], premium: x[1]})); 
    } 
} 

這裏有一個工作Plunkr:https://plnkr.co/edit/6dtMZevtlDli2Og3gWl9?p=preview