Angular 5组件在选择器中需要`-`吗?

Ole*_*Ole 2 javascript web-component angular

我正在审查这个Angular 5表单youtube教程,其中Sebastian最初有一个名为的表单选择器app-form01,但是他删除了该app-部分.IIUC自定义元素应该具有-.这放松了吗?

Gün*_*uer 6

-根本不需要.它被认为是一种良好的做法,因为它符合自定义元素要求.除此之外,组件的行为在有或没有的-情况下将完全相同,您也可以使用混合大小写的名称.

也可以看看

在kebab -case移除期间,由于自定义元素规范,我们将元素选择器保持为dasherized .

组件名称仍然是破折号的,因为自定义元素规范需要破折号,我们将其用作指导,因为即使在使Angular模板区分大小写后,模板仍然是有效的html5片段(尽管由于区分大小而具有更高的保真度,但只有我们的html解析器可以看到).

很少有人知道自定义元素规范和破折号给我们的保证,所以我认为最好强制所有的指令/组件元素选择器中至少有一个破折号.应该有一种方法可以通过组件/指令元数据中的标志选择退出,但默认情况下不应该打开.

如果有人不熟悉自定义元素规范,则在元素名称中添加短划线的好处是:

  • 元素成为自定义元素 - DOM节点的类型是HTMLElement而不是HTMLUnknownElement
  • 如果我们需要它,我们可以通过document.registerElement注册一个假元素从:unresolvedpsedo类中受益
  • 规范保证浏览器不会在名称中引入带短划线的原生元素,这意味着如果浏览器本身实现与Angular Component选择器匹配的元素(例如),应用程序将来不会中断

有关更多信息自定义元素.