Commit 3b7780b
committed
fix(core): debounce leave animation instruction calls
There are cases where the animation instructions get called in rapid succession. For example:
```
@if (show$ | async) {
<div animate.leave="class-name">...</div>
}
```
In this situation, the leave instruction may be called several times.
With `animate.leave` this causes problems due to the promises that are awaited, but will never resolve. This results in duplicated or nodes that are left behind.
This PR adds a debounce based on the lView, tNode index, and value. The main reason we need to key off of the value is because of host binding composition, which is a legitimate reason we may have multiple calls in rapid succession. We need to still allow those to happen.
`animate.enter` would also be called in rapid succession in this same scenario, but there's no concerns with that situation since there's no promises present. It would resolve on its own.
fixes: angular#645811 parent e47ef3e commit 3b7780b
File tree
4 files changed
+58
-17
lines changed- packages/core
- src
- animation
- render3/instructions
- test/acceptance
4 files changed
+58
-17
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
| 79 | + | |
| 80 | + | |
79 | 81 | | |
80 | 82 | | |
81 | 83 | | |
| 84 | + | |
82 | 85 | | |
83 | 86 | | |
84 | 87 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
292 | 293 | | |
293 | 294 | | |
294 | 295 | | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
| |||
251 | 252 | | |
252 | 253 | | |
253 | 254 | | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
259 | 261 | | |
260 | 262 | | |
261 | 263 | | |
| |||
341 | 343 | | |
342 | 344 | | |
343 | 345 | | |
| 346 | + | |
344 | 347 | | |
345 | 348 | | |
346 | 349 | | |
| |||
384 | 387 | | |
385 | 388 | | |
386 | 389 | | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
394 | 397 | | |
395 | 398 | | |
396 | 399 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1651 | 1651 | | |
1652 | 1652 | | |
1653 | 1653 | | |
1654 | | - | |
| 1654 | + | |
1655 | 1655 | | |
1656 | 1656 | | |
1657 | 1657 | | |
| |||
1674 | 1674 | | |
1675 | 1675 | | |
1676 | 1676 | | |
1677 | | - | |
1678 | | - | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1679 | 1687 | | |
1680 | 1688 | | |
1681 | 1689 | | |
| |||
2045 | 2053 | | |
2046 | 2054 | | |
2047 | 2055 | | |
2048 | | - | |
2049 | 2056 | | |
2050 | 2057 | | |
2051 | 2058 | | |
| |||
2219 | 2226 | | |
2220 | 2227 | | |
2221 | 2228 | | |
| 2229 | + | |
2222 | 2230 | | |
2223 | 2231 | | |
2224 | 2232 | | |
| |||
0 commit comments