¿Cómo acceder al primer elemento de una matriz cuando se usa una tubería asíncrona?
<nav-tabs
[tabs]="(pageTabs$ | async)"
[activeTab]="(pageTabs$ | async)[0]">
</nav-tabs>
He intentado (pageTabs$ | async)[0]
pero no funcionó.
Respuestas
3 para la respuesta № 1Encontró una forma aún más fácil de hacerlo (sin crear una tubería personalizada): agregue un mapa a lo observable.
component.ts
this.activeTab$ = this.pageTabs$.map(x => x[0]);
component.html
<nav-tabs
[tabs]="(pageTabs$ | async)"
[activeTab]="(activeTab$ | async)">
</nav-tabs>
1 para la respuesta № 2
Tienes que crear una tubería personalizada que tomará el primer elemento de la matriz, (pageTabs$ | async)
no es una matriz
0 para la respuesta № 3
Simplemente escribiría un nuevo getter en el código de sus componentes:
public get activeTab$() {
return this.pageTabs$.map(tabs => Array.isArray(tabs)? tabs[0]: null;
}
y luego usarlo:
[active-tab]="activeTab$ | async"
O puede hacerlo en su componente de pestañas de navegación:
public get activeTab() {
return Array.isArray(this.tabs)? tabs[0]: null;
}