Commit b79ed1f
committed
fix(material/tabs): endless toggling when selecting tabs in quick succession
`selectedTabChange` is an async `EventEmitter`, so its subscribers are invoked in a
`setTimeout`. When the selection changes several times before those callbacks run, a
callback can be delivered with an index that is no longer current. Consumers that write
`event.index` back into `[selectedIndex]` then push the group back to the stale index,
which emits again and results in an endless toggle.
Emits the event from the same microtask as `selectedIndexChange` so that emit time and
delivery time coincide, which is why `selectedIndexChange` is already unaffected.
Fixes #240961 parent ab16b1f commit b79ed1f
2 files changed
Lines changed: 41 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
898 | 898 | | |
899 | 899 | | |
900 | 900 | | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
901 | 924 | | |
902 | 925 | | |
903 | 926 | | |
| |||
1649 | 1672 | | |
1650 | 1673 | | |
1651 | 1674 | | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
282 | 282 | | |
283 | 283 | | |
284 | 284 | | |
285 | | - | |
| 285 | + | |
286 | 286 | | |
287 | 287 | | |
288 | 288 | | |
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
335 | | - | |
336 | 335 | | |
337 | 336 | | |
338 | 337 | | |
| |||
346 | 345 | | |
347 | 346 | | |
348 | 347 | | |
| 348 | + | |
349 | 349 | | |
350 | 350 | | |
351 | 351 | | |
| |||
0 commit comments