單ngIf組合兩個或多個(布爾)觀測沒有觀測我可以寫在HTML模板下面一行:使用異步管
<div *ngIf="(myVarA || myVarB) && myVarC !== x"></div>
如果所有myVar
變量是現在實際上是如何翻譯這行觀測?
<div *ngIf="((myVarA | async) || (myVarB | async)) && (myVarC | async) !== x">
不起作用。
在另一個問題(Putting two async subscriptions in one Angular *ngIf statement)的可能性將兩個或多個觀測值合併成一個ngIf可以像
<div *ngIf="{ a: myVarA | async, b: myVarB | async } as result"></div>
實現然而,我沒有看到,能使用任何布爾運算符(或任何運營商那麼重要),然後用於評估ngIf。
我該如何解決這個問題?請注意,我的所有Observable都在下面使用BehaviorSubject。我想基本上我想要的是在模板中使用combineLatest
運算符。
獎勵:如果整個表達式的計算結果爲true,以便以後在模板中使用(如myVarA | async as varA
),是否有任何方法可以提取myVarA的單個值?
是否有可能創建一個新的可觀察結合兩者?另一種方法是使用一個以undefined開頭的對象變量,或者爲null,並且在observables發送下一個值後,您可以將對象變量設置爲某個值。 – John
observables用於在您的情況下獲取數值流,變量一次只能有一個值。你要麼訂閱觀察數組,然後使用異步只有數組不可觀察 –
@John我正在使用ChangeDetectionStrategy.onPush的被動方法,所以我不能在代碼中使用一個對象,然後在模板中進行更新。使用combineLatest結合observables是我的想法,但我真的想避免在代碼 – Sebastian