fix(hierarchicalGrid): Ensure col instances created from ri cols are … - #17507
Open
MayaKirova wants to merge 1 commit into
Open
fix(hierarchicalGrid): Ensure col instances created from ri cols are …#17507MayaKirova wants to merge 1 commit into
MayaKirova wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes a memory-leak scenario in the Hierarchical Grid by explicitly tracking and destroying dynamically created column component instances that originate from IgxRowIslandComponent declarative column definitions.
Changes:
- Track
ComponentRefs created when materializing row-island columns for child grids. - Destroy tracked column
ComponentRefs duringngOnDestroyof the grid instance to prevent detached elements from remaining in memory.
Suppressed comments (2)
projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-base.directive.ts:226
- This change fixes a memory-leak scenario by explicitly destroying dynamically-created column component refs on grid destroy, but there are no unit tests to prevent regressions. Consider adding a spec that creates a hierarchical grid with row-island declarative columns, expands a row (creating child grid columns), destroys the grid, and asserts the created ComponentRefs are destroyed / no longer retained.
public override ngOnDestroy() {
this.destroyRowIslandColumnRefs();
super.ngOnDestroy();
}
projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-base.directive.ts:147
createColumnsList()can be invoked multiple times for the same child grid (e.g. when row-island columns change). Currently it only appends new ComponentRefs into_rowIslandColumnRefsand doesn’t clean up previously created refs, so memory can grow until the grid is destroyed. Consider destroying the existing row-island column refs at the start ofcreateColumnsList()before creating the new set.
topLevelCols.forEach((col) => {
col.grid = this;
const ref = this._createColumn(col);
this._rowIslandColumnRefs.push(ref);
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
| /* blazorSuppress */ | ||
| public abstract expandChildren: boolean; | ||
|
|
||
| protected _rowIslandColumnRefs: ComponentRef<IgxColumnComponent>[] = []; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…destroyed.
Closes #17502
Description
Destroy column instances that are created for child grids from row island column declarations, since they seem to remain after target grid is destroyed for some reason.
Checklist:
feature/README.MDupdates for the feature docsREADME.MDCHANGELOG.MDupdates for newly added functionalityng updatemigrations for the breaking changes (migrations guidelines)