feat(ivy): support property bindings and interpolations in DebugElement (#28355)
DebugElement.properties should contain a map of element property names to element property values, with entries for both normal property bindings and host bindings. This commit adds support for property bindings in DebugElement.properties (including interpolations). PR Close #28355
This commit is contained in:

committed by
Jason Aden

parent
46aec4a58f
commit
bf97d3b73e
@ -291,4 +291,28 @@ export function resolveDocument(element: RElement & {ownerDocument: Document}) {
|
||||
|
||||
export function resolveBody(element: RElement & {ownerDocument: Document}) {
|
||||
return {name: 'body', target: element.ownerDocument.body};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The special delimiter we use to separate property names, prefixes, and suffixes
|
||||
* in property binding metadata. See storeBindingMetadata().
|
||||
*
|
||||
* We intentionally use the Unicode "REPLACEMENT CHARACTER" (U+FFFD) as a delimiter
|
||||
* because it is a very uncommon character that is unlikely to be part of a user's
|
||||
* property names or interpolation strings. If it is in fact used in a property
|
||||
* binding, DebugElement.properties will not return the correct value for that
|
||||
* binding. However, there should be no runtime effect for real applications.
|
||||
*
|
||||
* This character is typically rendered as a question mark inside of a diamond.
|
||||
* See https://en.wikipedia.org/wiki/Specials_(Unicode_block)
|
||||
*
|
||||
*/
|
||||
export const INTERPOLATION_DELIMITER = `<EFBFBD>`;
|
||||
|
||||
/**
|
||||
* Determines whether or not the given string is a property metadata string.
|
||||
* See storeBindingMetadata().
|
||||
*/
|
||||
export function isPropMetadataString(str: string): boolean {
|
||||
return str.indexOf(INTERPOLATION_DELIMITER) >= 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user