【问题标题】:What are the non-standard HTML elements in compiled Angular code? [duplicate]编译的 Angular 代码中的非标准 HTML 元素是什么? [复制]
【发布时间】:2022-01-12 13:14:02
【问题描述】:

检查 Angular 创建的网页上的 DOM 时,我看到许多非标准 HTML 元素。例如。检查Angular documentation on custom elements。这些非标准的 HTML 元素是什么?链接中的非标准元素示例:aio-shellmat-toolbar

我能想到的最接近的东西是来自 Web 组件的custom elements,但我还没有找到说明所有 Angular 组件将自动编译为自定义元素的文档。 Angular 支持创建自定义元素,但从文档看来,必须导入 @angular/elements 并调用 createCustomElement,而我有一个项目,我没有做过这些,但仍然在 DOM 中看到非标准的 HTML 元素。

我可以提一下,我习惯了 React,据我所知,它只输出标准的 HTML 元素。

【问题讨论】:

  • 你能提供一个具体的例子来说明你的问题吗?
  • 也许您正在使用带有自定义组件的框架或库(Material、Nebular 等),这就是您在检查元素中看到的内容。
  • @J.Starkl 使用示例更新了问题:aio-shell 和 mat-toolbar。我知道最后一个可能来自 Material UI,所以 Material UI 是在创建 web 组件?
  • mat-toolbar 可能来自Angular Material。 Angular 不会删除或替换非标准的 HTML 元素。您将在生成的输出中找到所有组件。
  • @Qiimiia 我正在使用Material UI,看不到他们的文档中提到的网络组件,但我想这可能是答案。

标签: angular


【解决方案1】:

实际上,HTML5 允许使用非标准 HTML 元素。无需为自定义元素定义 custom element(来自 Web 组件)即可在 DOM 中显示。更多细节在这里(在“关于基本语法的有效性”部分下):https://stackoverflow.com/a/34972064/6113915

因此,提出非标准 HTML 元素无效或坏的问题的假设在很大程度上是错误的,尽管可以对此进行讨论。链接的 SO 帖子声明“W3C 强烈建议反对他们”,并且 HTML 规范中提到自定义元素的 Extensibility paragraph 段落被声明为“非规范”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多