fix(ivy): debug node names should match user declaration (#32328)

PR Close #32328
This commit is contained in:
Andrew Scott 2019-08-26 15:22:04 -07:00 committed by atscott
parent f209aacbfa
commit 14feb56139
2 changed files with 26 additions and 1 deletions

View File

@ -247,7 +247,17 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements DebugEleme
return this.nativeNode.nodeType == Node.ELEMENT_NODE ? this.nativeNode as Element : null;
}
get name(): string { return this.nativeNode.nodeName; }
get name(): string {
try {
const context = loadLContext(this.nativeNode) !;
const lView = context.lView;
const tData = lView[TVIEW].data;
const tNode = tData[context.nodeIndex] as TNode;
return tNode.tagName !;
} catch (e) {
return this.nativeNode.nodeName;
}
}
/**
* Gets a map of property names to property values for an element.

View File

@ -1036,4 +1036,19 @@ class TestCmptWithPropBindings {
}
expect(superParentName).not.toEqual('');
});
it('should match node name with declared casing', () => {
@Component({template: `<div></div><myComponent></myComponent>`})
class Wrapper {
}
@Component({selector: 'myComponent', template: ''})
class MyComponent {
}
const fixture = TestBed.configureTestingModule({declarations: [Wrapper, MyComponent]})
.createComponent(Wrapper);
expect(fixture.debugElement.query(e => e.name === 'myComponent')).toBeTruthy();
expect(fixture.debugElement.query(e => e.name === 'div')).toBeTruthy();
});
}