typescript - תחביר תבנית Angular להקצות מערך אסינכרוני כמשתנים מרובים
ב-JS, יש דרך אלגנטית להעביר ערכים ממערך נתון למשתנים חדשים כך:
let [a, b, c] = [1, 2, 3]; // a = 1, b = 2, c = 3
תהיתי אם אני יכול להשיג את אותה הדרך האלגנטית באמצעות תחביר ה-HTML של Angular, משהו כזה:
// TS
this.obs1$: Observable<ObsType1> = ...;
this.obs2$: Observable<ObsType2> = ...;
this.combined$ = combineLatest(this.obs1$, this.obs2$);
// HTML
<div *ngIf="combined$ | async as [valOfObs1, valOfObs2]">
...
</div>
ה‑combined$ הנצפה הוא התוצאה של combineLatest מ‑RxJS שצריך להחזיר לי מערך של ערכי מערכים.
תשובה #1
כנראה, אין שום דבר במסמכים שמרמז שזה אפשרי. לכן, היה עלי ליצור פתרון עקיף כזה:
this.obs1$: Observable<ObsType1> = ...;
this.obs2$: Observable<ObsType2> = ...;
this.combined$: Observable<{obs1: ObsType1, obs2:: ObsType2}>;
this.combined$ = combineLatest(this.obs1$, this.obs2$).pipe(
map(([obs1, obs2]) => ({obs1, obs2});
);
// HTML
<div *ngIf="combined$ | async as combined">
{{ combined.obs1.foo}}
{{ combined.obs2.bar}}
</div>
