fix(core): DebugElement.listeners not cleared on destroy (#31820)

Currently the `DebugElement.listeners` array are retained after the node is destroyed. This means that they'll continue to fire through `triggerEventHandler` and can cause memory leaks. This has already been fixed in Ivy, but these changes fix it in ViewEngine for consistency.

PR Close #31820
This commit is contained in:
Kristiyan Kostadinov
2019-07-24 16:57:55 +02:00
committed by Andrew Kushnir
parent 5f0d5e9ccf
commit 14dba72aee
2 changed files with 41 additions and 2 deletions

View File

@ -688,7 +688,11 @@ export class DebugRenderer2 implements Renderer2 {
constructor(private delegate: Renderer2) { this.data = this.delegate.data; }
destroyNode(node: any) {
removeDebugNodeFromIndex(getDebugNode(node) !);
const debugNode = getDebugNode(node) !;
removeDebugNodeFromIndex(debugNode);
if (debugNode instanceof DebugNode__PRE_R3__) {
debugNode.listeners.length = 0;
}
if (this.delegate.destroyNode) {
this.delegate.destroyNode(node);
}