angular - 来自不同脚本的多个 Angular 元素

标签 angular angular6 custom-element

是否可以使用 Angular Elements从不同的脚本生成?

我有 2 个项目天气小部件和时钟小部件,它们生成自己的脚本(连接所有必需的脚本)。

当我单独使用这些小部件时,它工作正常,但是当它们在同一页面上使用时,会出现如下所示的错误:

DOMException: Failed to execute 'define' on 'CustomElementRegistry': this name has already been used with this registry
at CustomElementRegistry.define (http://172.27.147.64:8080/node_modules/document-register-element/build/document-register-element.js:2:18538)
at new AppModule (http://172.27.147.64:8080/dist/weather-widget/main.js:115:24)

最佳答案

只是为了更新它,以便其他用户找到解决方案。现在可以使用 Angular Custom Webpack Builder .

在 angular.json 中

      "architect": {
        "build": {
          "builder": "@angular-builders/custom-webpack:browser",
          "options": {
            "customWebpackConfig": {
              "path": "./apps/custom-elements/extra-webpack.config.js",
              "mergeStrategies": { "externals": "replace" }
            },
            ...

在 extra-webpack.config.js 文件中添加如下内容:
module.exports = {
  output: {
    jsonpFunction: 'webpackJsonpElements',
    library: 'elements',
  },
}

如果它仍然不起作用,请尝试从 Polyfills.ts 文件中添加/删除 polyfills 并添加/删除 custom-elements-es5-adapter.js which you can pull from here

关于angular - 来自不同脚本的多个 Angular 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619736/

相关文章:

javascript - 如何在 Angular 8之间共享数据

typescript - Angular Material 6 的包装菜单组件

javascript - 在 Shadow DOM 中创建单选按钮

javascript - 如何测试 Angular Material 对话框?

angular - 是否可以使用 Angular Material 构建图像轮播?

angular - TransferHttpCacheModule 与 transferstate api 之间的区别

css - 如何为 Angular 6 元素全局添加自定义 CSS 文件

css - 从 css 到 scss 的 Angular-cli

javascript - Angular - 自定义元素不适用于 Firefox 和 Microsoft Edge 和 Internet Explorer

javascript - 自定义元素原型(prototype)中的重写函数会更改 this 对象