Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
Angular mostrando una tabla con una condición

En mi código, tengo una lista JSON que obtengo datos usando fromFetch(). Puedo obtener los datos y agruparlos en la consola por ID de categoría. Quiero mostrar una tabla de productos solo con la categoría Id de 2. En este momento, solo puedo mostrar una tabla uniforme sin la condición que quiero. ¿Qué debo hacer para lograr lo que quiero?

HTML:

 <div> <table mat-table [dataSource]="items$ | async" class="mat-elevation-z8" matSort > <ng-container matColumnDef="categoryId"> <th mat-header-cell *matHeaderCellDef mat-sort-header>Category Id</th> <td mat-cell *matCellDef="let item">{{ item.categoryId }}</td> </ng-container> <ng-container matColumnDef="name"> <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th> <td mat-cell *matCellDef="let item">{{ item.name }}</td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr> </table> </div>

TS:

 items$: Observable<Item[]>; dataSource: MatTableDataSource<Item>; @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator; @ViewChild(MatSort, { static: true }) sort: MatSort; displayedColumns: string[] = ['categoryId', 'name']; ngAfterViewInit(): void { this.items$ = fromFetch( 'someitems/data/items.json' ).pipe( switchMap((response) => { return response.json(); }) ); this.items$.subscribe(function (result) { const grouped = _.groupBy(result, (res) => res.categoryId); this.dataSource = result; this.dataSource.paginator = this.paginator; this.dataSource.sort = this.sort; console.log(grouped); }); }
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede extender los items$ observables, para realizar más operaciones utilizando otro operador de map . Aplique su lógica de transformación de objetos en la función de map .

Actualizar

En el lado de la plantilla, tuvo que agregar una fila separada para la fila groupBy, ¿verdad? Puede usar la cláusula when en otro mat-row . Dentro de la cláusula when puede agregar la función isGroup , que ayuda a verificar si mostrar la fila groupBy o no.

Modelo

 <tr mat-row *matRowDef="let row; columns: ['initial']; when: isGroup" ></tr>

TS

 isGroup(index, item): boolean { return item.isGroupBy; } this.items$ = fromFetch( 'someitems/data/items.json' ).pipe( switchMap((response) => { return response.json(); }), map((data) => { const grouped = groupBy(data, (res) => res.categoryId); let output = []; for (let group in grouped) { output.push({ initial: group, isGroupBy: true }); output = output.concat(grouped[group]); } return output; }) );

apilar

about 4 years ago · Santiago Trujillo Relatório

0

Puede usar la función como argumento de fuente de datos

 <table mat-table [dataSource]="fetch(2) | async" class="mat-elevation-z8" matSort>

y la función se verá algo como:

 fetch(catId): MatTableDataSource<Item>{ const data = this.items$.filter(row => row.categoryId === catId); const ds = new MatTableDataSource<Item>(data); ds.paginator = this.paginator; ds.sort = this.sort; return ds; }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda