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

163
Visualizações
¿Cómo configurar la posición de desplazamiento cerca de la fila de tapetes en Angular?

Tengo más de 20 registros cargados en la tabla de material angular. Cuando hago clic en una fila, navega a una página. Y cuando presiono el botón Atrás, vuelve a la página de la tabla. El problema es que cuando hago clic en la última fila de la tabla, la posición de desplazamiento va hacia arriba. Solo quiero establecer la posición de desplazamiento cerca de la fila en la que se hizo clic.

¿Cómo logro eso y refiero el código en el siguiente enlace?

https://stackblitz.com/edit/angular-material-router-mra2ke?file=src/app/plain/plain.component.ts

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tendrá que hacer dos cosas para que el código existente funcione:

  • Las variables de los componentes se pierden cuando se destruye el componente. Entonces, en lugar de usar la variable del componente para almacenar la posición actual, use los almacenamientos del navegador como sessionStorage / localStorage o use una variable from shared service y establezca la id en las filas. Por ejemplo, puedes hacer algo como:
 get elementClickedId() { return sessionStorage.getItem('elementClickedId'); } set elementClickedId(id) { sessionStorage.setItem('elementClickedId', id); }

Establecer id dentro de su html:

 <td mat-cell *matCellDef="let element" [id]="element.position"> {{ element.position }} </td>
  • Cuando intenta hacer document.getElementById, la vista no se inicializa, por lo que no se desplaza automáticamente. Entonces, en lugar de llamar a moveToSection en ngOnInit , hágalo en ngAfterViewInit .

Ejemplo de trabajo: https://stackblitz.com/edit/angular-material-router-eo6wnt?file=src/app/plain/plain.component.ts

PD: Angular viene con scrollPositionRestoration de configuración de navegación que ayuda a lograr esto. Pero desafortunadamente no funciona todo el tiempo, tiene un defecto: https://github.com/angular/angular/issues/24547

about 4 years ago · Juan Pablo Isaza Relatório

0

Necesita un servicio singleton para mantener la posición actual:

(Tenga en cuenta que también podemos usar localStorage o sessionStorage , pero se recomienda encarecidamente usar el servicio singleton y es mejor que usarlo de otra manera).

 @Injectable({ providedIn: 'root', }) export class ApiService { elementClickedId:any; }

Y también necesita establecer una identificación para su td:

 <td mat-cell *matCellDef="let element" id={{element.position}}>{{ element.position }}</td>

Y use ngAfterViewInit en lugar de ngOnInit para asegurarse de que después de completar la representación de su tabla, configure el desplazamiento.

Aquí hay una muestra de trabajo que he creado para usted: StackBlitzForked

about 4 years ago · Juan Pablo Isaza 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