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

时间:2016-01-16 07:50:30

标签: angular

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

  

TypeError el.createShadowRoot不是函数

同样在Edge:

  

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

来自Edge的更多信息: enter image description here

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

3 个答案:

答案 0 :(得分:6)

只有在您使用createShadowRoot()时才能调用{p> ViewEncapsulation.Native

使用ViewEncapsulation.Emulated或确保加载polyfill(我无法指导您如何操作,因为我不使用TS工具链,只使用Dart)

答案 1 :(得分:3)

我最近遇到了同样的问题,在Firefox上出现了此错误 !jProperty.HasMemberAttribute

从文档中,我了解到不赞成使用createShawdowRoot,而将其替换为attachShadow() https://developer.mozilla.org/en-US/docs/Web/API/Element/createShadowRoot

查看我Angular项目中所有组件的封装,一个组件脱颖而出,并使用了ViewEncapsulation.Native,该组件也已弃用,因此我按建议将其替换为ViewEncapsulation.ShadowDom,请检查 https://angular.io/api/core/Component#encapsulation

那为我治愈了。

因此,我想Firefox不再支持Native封装编译为createShawdowRoot。

答案 2 :(得分:1)

如果您在简单的HTML文件中遇到此问题,那么下面的代码行可能会有所帮助

element.attachShadow({mode: 'open'})