Angular2异常:TypeError el.createShadowRoot不是函数(Safari/Edge)

bra*_*ndo 6 angular

我有一个angular2应用程序在Chrome和Firefox中运行良好,但在Safari中我收到此错误:

TypeError el.createShadowRoot不是函数

在Edge中同样如此:

对象不支持BrowserDomAdapter.prototype.createShadowRoot中的属性或方法'createShadowRoot'(http:// localhost:5000/lib/angular2/bundles/angular2.dev.js:22893:7)

更多来自Edge: 在此输入图像描述

我缺少一些垫片或聚合物吗?

Gün*_*uer 8

createShadowRoot()应该只在你使用时调用ViewEncapsulation.Native.

使用ViewEncapsulation.Emulated或确保填充polyfill(我无法指导你如何,因为我不使用TS工具链,只有Dart)


小智 7

我最近遇到了同样的问题,在 Firefox 上遇到了这个错误 el.createShadowRoot is not a function

从文档中,我了解到不推荐使用 createShawdowRoot,取而代之的是 attachShadow() https://developer.mozilla.org/en-US/docs/Web/API/Element/createShadowRoot

查看我的 Angular 项目中所有组件的封装,一个组件脱颖而出,并且使用了 ViewEncapsulation.Native ,它也被弃用,所以我按照建议将其替换为 ViewEncapsulation.ShadowDom,检查 https://angular.io/api /核心/组件#封装

这对我来说治愈了。

所以我认为 Native 封装编译为 Firefox 不再支持的 createShawdowRoot 。