Skip to content

Commit 55ab1a7

Browse files
authored
Merge pull request #185 from dkamburov/master
Implement ngOnDestroy for Igniteui Angular Components
2 parents 0d13799 + 517f985 commit 55ab1a7

File tree

2 files changed

+31
-19
lines changed

2 files changed

+31
-19
lines changed

src/igniteui.angular2.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,6 +1152,8 @@ export class IgControlBase<Model> implements DoCheck {
11521152
protected _events: Map<string, string>;
11531153
protected _allowChangeDetection = true;
11541154
private _evtEmmiters : any = {};
1155+
private _changeDetectionInterval: any;
1156+
private _nativeElement:any;
11551157

11561158
set options(v: Model) {
11571159
if (this._config !== undefined && this._config !== null) {
@@ -1178,6 +1180,7 @@ export class IgControlBase<Model> implements DoCheck {
11781180

11791181
constructor(el: ElementRef, renderer: Renderer, differs: IterableDiffers) {
11801182
this._differs = differs;
1183+
this._nativeElement = el.nativeElement;
11811184
this._widgetName = this.convertToCamelCase(el.nativeElement.nodeName.toLowerCase());//ig-grid -> igGrid
11821185
this._el = el.nativeElement.appendChild(document.createElement(NODES[el.nativeElement.nodeName.toLowerCase()]));
11831186

@@ -1245,7 +1248,7 @@ export class IgControlBase<Model> implements DoCheck {
12451248
this.changeDetectionInterval = 500;
12461249
}
12471250

1248-
setInterval(function () {
1251+
this._changeDetectionInterval = setInterval(function () {
12491252
that._allowChangeDetection = true;
12501253
}, this.changeDetectionInterval);
12511254

@@ -1388,6 +1391,13 @@ export class IgControlBase<Model> implements DoCheck {
13881391
return group[1].toUpperCase();
13891392
});
13901393
}
1394+
1395+
ngOnDestroy() {
1396+
clearInterval(this._changeDetectionInterval);
1397+
jQuery(this._el)[this._widgetName]("destroy");
1398+
jQuery(this._el).remove();
1399+
jQuery(this._nativeElement).remove();
1400+
}
13911401
}
13921402

13931403
export class IgGridBase<Model> extends IgControlBase<Model> implements AfterContentInit {

tests/unit/ighierarchicalgrid/hierarchicalgrid.spec.ts

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,17 @@ export function main() {
171171
fixture.detectChanges();
172172
//expand first record
173173
var row = $("#grid1").igGrid("rowAt", 0);
174-
$("#grid1").igHierarchicalGrid("expand", row);
175-
//change data child data
176-
fixture.componentInstance.data[0].Products.removeAt(0);
174+
$("#grid1").igHierarchicalGrid("expand", row, () => {
175+
//change data child data
176+
fixture.componentInstance.data[0].Products.removeAt(0);
177177

178-
setTimeout(() => {
179-
fixture.detectChanges();
180-
expect($(fixture.debugElement.nativeElement).find("#grid1").igHierarchicalGrid("option", "dataSource")[0].Products.length)
181-
.toBe(0);
182-
done();
183-
}, 10);
178+
setTimeout(() => {
179+
fixture.detectChanges();
180+
expect($(fixture.debugElement.nativeElement).find("#grid1").igHierarchicalGrid("option", "dataSource")[0].Products.length)
181+
.toBe(0);
182+
done();
183+
}, 10);
184+
});
184185
});
185186
});
186187

@@ -196,15 +197,16 @@ export function main() {
196197
fixture.detectChanges();
197198
//expand first record
198199
var row = $("#grid1").igGrid("rowAt", 0);
199-
$("#grid1").igHierarchicalGrid("expand", row);
200-
//change data child data
201-
fixture.componentInstance.data[0].Products[0].Name = "Custom Name";
202-
setTimeout(() => {
203-
fixture.detectChanges();
204-
expect($($(fixture.debugElement.nativeElement).find("#grid1_0_Products_child").igGrid("cellAt", 1, 0)).text())
205-
.toBe("Custom Name");
206-
done();
207-
}, 10);
200+
$("#grid1").igHierarchicalGrid("expand", row, () => {
201+
//change data child data
202+
fixture.componentInstance.data[0].Products[0].Name = "Custom Name";
203+
setTimeout(() => {
204+
fixture.detectChanges();
205+
expect($($(fixture.debugElement.nativeElement).find("#grid1_0_Products_child").igGrid("cellAt", 1, 0)).text())
206+
.toBe("Custom Name");
207+
done();
208+
}, 10);
209+
});
208210
});
209211
});
210212
});

0 commit comments

Comments
 (0)