fix(ivy): include className in DebugNode.properties (#29488)

Fixes the node's class bindings not being included under `DebugNode.properties.className` like in ViewEngine.

This PR resolves FW-1196.

PR Close #29488
This commit is contained in:
Kristiyan Kostadinov
2019-03-25 21:39:10 +01:00
committed by Miško Hevery
parent 7951c4feb2
commit 568140fb03
2 changed files with 49 additions and 2 deletions

View File

@ -257,7 +257,14 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements DebugEleme
const properties = collectPropertyBindings(tNode, lView, tData);
const hostProperties = collectHostPropertyBindings(tNode, lView, tData);
return {...properties, ...hostProperties};
const className = collectClassNames(this);
const output = {...properties, ...hostProperties};
if (className) {
output['className'] = output['className'] ? output['className'] + ` ${className}` : className;
}
return output;
}
get attributes(): {[key: string]: string | null;} {
@ -481,6 +488,20 @@ function collectHostPropertyBindings(
}
function collectClassNames(debugElement: DebugElement__POST_R3__): string {
const classes = debugElement.classes;
let output = '';
for (const className of Object.keys(classes)) {
if (classes[className]) {
output = output ? output + ` ${className}` : className;
}
}
return output;
}
// Need to keep the nodes in a global Map so that multiple angular apps are supported.
const _nativeNodeToDebugNode = new Map<any, DebugNode>();