Установка двух наблюдаемых в условии «If; else» (Angular 7+) - PullRequest
1 голос
/ 22 января 2020

У меня есть шаблон, который показывает одну вещь, если определенное условие истинно, и другую вещь, если определенное условие ложно.

Я пробовал ng-шаблон, но он не работает:


<div *ngIf="conditionA$ | async; else elseBlock">A CAT</div>
<ng-template #elseBlock>
<div *ngIf="conditionB$ | async">A DOG</div> 
</ng-template>

Я хотел бы установить функцию, которая установит "или" для двух наблюдаемых:

TS

public conditionA$ = this.billingService.conditionAA$;
public conditionB$ = this.billingService.conditionBB$;

 get combined$() {
    return combineLatest(
      this.conditionA$,
      this.conditionB$,
      (A, B) => (A || !(B)));
}

HTML

<div *ngIf="combined$ | async">something<div/>

этот код дает мне ошибку:

Ошибка: InvalidPipeArgument: ' function (source) {return source.lift.call (Object (_observable_from__WEBPACK_IMPORTED_MODULE_2 __ ["from"]) ([source] .concat (observables)), новый _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1 atest "Combine) } 'для канала' AsyncPipe 'в invalidPipeArgumentError

1 Ответ

1 голос
/ 22 января 2020

Вы можете использовать iif такой оператор

import { fromEvent, iif, of, interval, pipe } from 'rxjs';
import { mergeMap } from 'rxjs/operators';

interval(1000)
  .pipe(
    mergeMap(v =>
      iif(
        () => !!(v % 2),
        of(v)
        // if not supplied defaults to EMPTY
      )
    )
    // output: 1,3,5...
  )
  .subscribe(console.log);
...