New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(core): Refresh transplanted views at insertion point only #35968
Conversation
2820401
to
cde7f9e
Compare
cde7f9e
to
51591b0
Compare
presubmit - failures seem to be pre-existing by comparing to recent clean run global also seems to look good when compared to recent run I've also confirmed that this PR fixes the 3 of 4 test failures that were suspected to have been caused by transplanted view CD differences between Ivy and VE (I think one is actually a different issues after investigation). |
ae78b21
to
d723859
Compare
895d6bd
to
2ba4f43
Compare
f292ace
to
cc1ded8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
packages/core/test/acceptance/change_detection_transplanted_view_spec.ts
Outdated
Show resolved
Hide resolved
828d6ab
to
7a258a7
Compare
FYI, I've started global presubmit (with Ivy) and will update this thread with the results as soon as I get them. |
FYI, global presubmit went well. @atscott could you please rebase this PR and resolve conflicts? |
Only refresh transplanted views at the insertion location in Ivy. Previously, Ivy would check transplanted views at both the insertion and declaration points. This is achieved by adding a marker to the insertion tree when we encounter a transplanted view that needs to be refreshed at its declaration. We use this marker as an extra indication that we still need to descend and refresh those transplanted views at their insertion locations even if the insertion view and/or its parents are not dirty. This change fixes several issues: * Transplanted views refreshed twice if both insertion and declaration are dirty. This could be an error if the insertion component changes result in data not being available to the transplanted view because it is slated to be removed. * CheckAlways transplanted views not refreshed if shielded by non-dirty OnPush (fixes angular#35400) * Transplanted views still refreshed when insertion tree is detached (fixes angular#21324)
7a258a7
to
086a25e
Compare
Only refresh transplanted views at the insertion location in Ivy. Previously, Ivy would check transplanted views at both the insertion and declaration points. This is achieved by adding a marker to the insertion tree when we encounter a transplanted view that needs to be refreshed at its declaration. We use this marker as an extra indication that we still need to descend and refresh those transplanted views at their insertion locations even if the insertion view and/or its parents are not dirty. This change fixes several issues: * Transplanted views refreshed twice if both insertion and declaration are dirty. This could be an error if the insertion component changes result in data not being available to the transplanted view because it is slated to be removed. * CheckAlways transplanted views not refreshed if shielded by non-dirty OnPush (fixes #35400) * Transplanted views still refreshed when insertion tree is detached (fixes #21324) PR Close #35968
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
…r#35968) Only refresh transplanted views at the insertion location in Ivy. Previously, Ivy would check transplanted views at both the insertion and declaration points. This is achieved by adding a marker to the insertion tree when we encounter a transplanted view that needs to be refreshed at its declaration. We use this marker as an extra indication that we still need to descend and refresh those transplanted views at their insertion locations even if the insertion view and/or its parents are not dirty. This change fixes several issues: * Transplanted views refreshed twice if both insertion and declaration are dirty. This could be an error if the insertion component changes result in data not being available to the transplanted view because it is slated to be removed. * CheckAlways transplanted views not refreshed if shielded by non-dirty OnPush (fixes angular#35400) * Transplanted views still refreshed when insertion tree is detached (fixes angular#21324) PR Close angular#35968
Only refresh transplanted views at the insertion location in Ivy.
This change fixes several issues:
are dirty. This could be an error if the insertion component changes
result in data not being available to the transplanted view because it
is slated to be removed.
non-dirty OnPush (fixes Ivy: ChangeDetection not running on transplanted views #35400)
(fixes Projected content checked, even if component is detached #21324)