我一直在测试 Angular Elements。基本上我创建了 2 个角度元素:一个简单的按钮和一个简单的输入。你可以在这里查看它们:http: //kaloyanmanev.com/edo-button.js和http://kaloyanmanev.com/edo-input.js
这两个元素都包括它们自己的 polyfills、main、runtime、脚本和样式,如下所示:https ://blog.angulartraining.com/tutorial-how-to-create-custom-angular-elements-55aea29d80c5
我正在尝试将它们包含在这样的 HTML 文件中:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<edo-button></edo-button>
<edo-input></edo-input>
<edo-button></edo-button>
</body>
<script src="http://kaloyanmanev.com/edo-button.js"></script>
<script src="http://kaloyanmanev.com/edo-input.js"></script>
</html>
基本上发生的事情是我得到了 2 个按钮,但它们之间没有输入,当然还有那个讨厌的错误:
Error: Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.
The most likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise API is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)
当我单独使用脚本时,它可以工作......如果我将它们都包含在内,它不会。我研究了一下,但找不到任何解决方案。真的没有办法在一页中使用 2 个角度元素吗?
这个问题很可能是由 Angular 使用的 zone.js 引起的。我尝试将其从元素的 polyfill 中删除,但随后出现错误,指出 zone.js 是必需的,并且没有任何元素起作用。
那么如何使用这些元素呢?
*编辑
我从包中删除了 polyfill,并从 CDN 中包含了 zone.js。尽管如此,还有另一个错误发生:
ERROR DOMException: Failed to execute 'define' on 'CustomElementRegistry': the name "`edo-button`" has already been used with this registry