angular-docs-cn/packages/core/test/change_detection/differs
Sirui Chen a8269264bf fix(core): make DefaultIterableDiffer keep the order of duplicates (#23941)
Previously, in `_mismatch()`, the `DefaultIterableDiffer` first checks
`_linkedRecords` for `itemTrackBy`, then checks `_unlinkedRecords`.
This cause the `DefaultIterableDiffer` to move "later" items that match the
`itemTrackBy` from the old collection, rather than using the "earlier" one.

Now we check `_unlinkedRecords` first, so that the `DefaultIterableDiffer`
can give a more stable and reasonable result after diffing. For example,
rather than (`a1` and `a2` have same trackById)

```
a1 b c a2 => b a2 c a1
```

we get

```
a1 b c a2 => b a1 c a2
```

where a1 and a2 retain their original order despite both
having the same track by value.

Fixes #23815

PR Close #23941
2021-01-26 15:44:42 -08:00
..
default_iterable_differ_spec.ts fix(core): make DefaultIterableDiffer keep the order of duplicates (#23941) 2021-01-26 15:44:42 -08:00
default_keyvalue_differ_spec.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
iterable_differs_spec.ts fix(core): Support extending differs from root `NgModule` (#39981) 2020-12-07 09:51:27 -08:00
keyvalue_differs_spec.ts fix(core): Support extending differs from root `NgModule` (#39981) 2020-12-07 09:51:27 -08:00