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

206
Visualizações
Cómo encontrar el recuento de elementos en un ngFor después de que se hayan aplicado las tuberías

Tengo un ngFor para crear filas en una tabla que está filtrada y paginada.

 <tr *ngFor="#d of data.results | filter:filterText | pagination:resultsPerPage:currentPage">

Hay otro elemento en la página que muestra el número de registros mostrados. Estos elementos están inicialmente vinculados a la longitud de los datos.Resultados.

¿Cómo obtengo la longitud de los datos que se muestran después de que se ha aplicado la tubería de filtro para que pueda mostrarlos correctamente? Ninguna de las variables locales proporcionadas en ngFor parece dar cuenta de esto.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Una forma es usar variables de plantilla con @ViewChildren()

 <tr #myVar *ngFor="let d of data.results | filter:filterText | pagination:resultsPerPage:currentPage">
 @ViewChildren('myVar') createdItems; ngAfterViewInit() { console.log(this.createdItems.toArray().length); }
over 4 years ago · Santiago Trujillo Relatório

0

Encontré que la solución más simple es la siguiente:

  1. En su componente: agregue un campo que contendrá el conteo actual
 filterMetadata = { count: 0 };
  1. En su plantilla: agregue filterMetadata como un parámetro a la tubería de filtro
 <tr *ngFor="#d of data.results | filter:filterText:filterMetadata | pagination:resultsPerPage:currentPage">
  1. interpole filterMetadata.count en el elemento que muestra el número de registros mostrados.
 <span> {{filterMetadata.count}} records displayed</span>
  1. En la tubería de filtro, actualice el campo filterMetadata.count cuando termine con el filtrado
 transform(items, ..., filterMetadata) { // filtering let filteredItems = filter(items); filterMetadata.count = filteredItems.length; return filteredItems; }

Esta solución todavía usa canalizaciones puras, por lo que no hay degradación del rendimiento. Si tiene varias tuberías que filtran, filterMetadata debe agregarse como parámetro a todas ellas porque angular deja de llamar a la secuencia de tuberías tan pronto como una tubería devuelve una matriz vacía, por lo que no puede simplemente agregarla a la primera o última tubería de filtrado.

over 4 years ago · Santiago Trujillo Relatório

0

Ese no es exactamente el propósito de la pregunta original, pero también estaba buscando una manera de mostrar el recuento de elementos una vez que se hayan aplicado todas las tuberías. Al combinar el índice y los últimos valores proporcionados por ngFor, encontré esta otra solución:

 <div *ngFor="#item of (items | filter); #i = index; #last = last"> ... <div id="counter_id" *ngIf="last">{{index + 1}} results</div> </div>
over 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