fix(ivy): set namespace for host elements of dynamically created components (#35136)
Prior to this change, element namespace was not set for host elements of dynamically created components that resulted in incorrect rendering in a browser. This commit adds the logic to pick and set correct namespace for host element when component is created dynamically. PR Close #35136
This commit is contained in:

committed by
Kara Erickson

parent
d5d9971c28
commit
ae0253f34a
@ -73,6 +73,8 @@ class DefaultServerRenderer2 implements Renderer2 {
|
||||
createElement(name: string, namespace?: string, debugInfo?: any): any {
|
||||
if (namespace) {
|
||||
const doc = this.document || getDOM().getDefaultDocument();
|
||||
// TODO(FW-811): Ivy may cause issues here because it's passing around
|
||||
// full URIs for namespaces, therefore this lookup will fail.
|
||||
return doc.createElementNS(NAMESPACE_URIS[namespace], name);
|
||||
}
|
||||
|
||||
@ -124,6 +126,8 @@ class DefaultServerRenderer2 implements Renderer2 {
|
||||
|
||||
setAttribute(el: any, name: string, value: string, namespace?: string): void {
|
||||
if (namespace) {
|
||||
// TODO(FW-811): Ivy may cause issues here because it's passing around
|
||||
// full URIs for namespaces, therefore this lookup will fail.
|
||||
el.setAttributeNS(NAMESPACE_URIS[namespace], namespace + ':' + name, value);
|
||||
} else {
|
||||
el.setAttribute(name, value);
|
||||
@ -132,6 +136,8 @@ class DefaultServerRenderer2 implements Renderer2 {
|
||||
|
||||
removeAttribute(el: any, name: string, namespace?: string): void {
|
||||
if (namespace) {
|
||||
// TODO(FW-811): Ivy may cause issues here because it's passing around
|
||||
// full URIs for namespaces, therefore this lookup will fail.
|
||||
el.removeAttributeNS(NAMESPACE_URIS[namespace], name);
|
||||
} else {
|
||||
el.removeAttribute(name);
|
||||
|
Reference in New Issue
Block a user