[Tabs] Toggling quickly can cause content to be duplicated
- Lenguaje dominante
- TypeScript
- Estrellas
- 25k
- Forks
- 6.8k
- Merge medio
- 1 d 8 h
- PR fusionados (30 d)
- 91
Descripción
#### Bug, feature request, or proposal:
I have had some trouble reproducing this one reliably (it seems to occur more often on my app than in reproductions) but there seems to be a race condition related to the rendering of tab content when it is lazy-loaded.
#### What is the expected behavior?
Tab content should only be displayed once.
#### What is the current behavior?
Toggling tabs very quickly (using arrow keys + space bar) can cause tab content to be drawn multiple times.
#### What are the steps to reproduce?
StackBlitz: https://stackblitz.com/edit/angular-material2-issue-h6pgut?file=app%2Fapp.component.ts
I am intentionally trying to be awkward in terms of timing (ie. setting the `selectedTabIndex` in a timeout), but this behaviour still should not happen.
I have recorded a reproduction in this video: https://gfycat.com/ReadyFairBasil
Note that at the start there is only one instance of each tab's content but by the end the second tab's content is duplicated.
#### What is the use-case or motivation for changing an existing behavior?
Bug
#### Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Latest StackBlitz (Angular 6-rc2, Material 6-rc1)
#### Is there anything else we should know?
I could only reproduce by using lazy-loaded tabs + NgForTrackBy + OnPush + window.setTimeout, but these may not be necessary. I also had to use keyboard selection to toggle fast enough to trigger the issue.
Guía de contribución
Línea de trabajo
Comienza ejecutando la reproducción de StackBlitz en app/app.component.ts y probando una selección rápida mediante el teclado con pestañas cargadas de forma diferida, NgForTrackBy, OnPush y setTimeout. Sigue la ruta de renderizado del contenido de las pestañas para identificar por qué el contenido aparece más de una vez; se considera terminado cuando la reproducción mantiene exactamente una instancia al alternar rápidamente de forma repetida.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- angular, typescript
- Área
- frontend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100