I have an angular2 app that works great in Chrome and Firefox, but in Safari I get this error:
TypeError el.createShadowRoot is not a function
if you are facing this issue in simple HTML file then below line of code can be helpful
element.attachShadow({mode: 'open'})
I faced the same issue recently, got this error on Firefox
el.createShadowRoot is not a function
From the documentation, I learned that createShawdowRoot is deprecated, replaced by attachShadow() https://developer.mozilla.org/en-US/docs/Web/API/Element/createShadowRoot
Looking at the encapsulation of all the components in my Angular project, one component stood out and was using the ViewEncapsulation.Native , which was also deprecated so I replaced it by ViewEncapsulation.ShadowDom as recommended, check https://angular.io/api/core/Component#encapsulation
and that cured it for me.
So I suppose that the Native encapsulation compiles to createShawdowRoot no longer supported by Firefox.
createShadowRoot()
should only be called if you use ViewEncapsulation.Native
.
Either use ViewEncapsulation.Emulated
or ensure polyfills are loaded (I can't guide you how, because I don't use the TS toolchain, only Dart)