Angular 带角前缀的管道

Angular 带角前缀的管道,angular,angular-cli,Angular,Angular Cli,我突然想到,尽管Angular CLI为组件和指令添加前缀,但它并不为管道添加前缀。通过测试,似乎无法将CLI配置为向管道添加前缀。有人知道为什么吗?我们为组件和指令加前缀(以防止模板中的命名冲突)的原因是否也适用于管道?没错,为组件和指令加前缀的目的是避免与DOM元素和元素属性(分别)发生命名冲突。管道不需要这样做,因为管道是角度特定的实现,并且不会与现有的HTML5实现冲突 例子 如果没有前缀ng g c header,将生成一个与HTML header元素冲突的元素。所以我们在它前面加上

我突然想到,尽管Angular CLI为组件和指令添加前缀,但它并不为管道添加前缀。通过测试,似乎无法将CLI配置为向管道添加前缀。有人知道为什么吗?我们为组件和指令加前缀(以防止模板中的命名冲突)的原因是否也适用于管道?

没错,为组件和指令加前缀的目的是避免与DOM元素和元素属性(分别)发生命名冲突。管道不需要这样做,因为管道是角度特定的实现,并且不会与现有的HTML5实现冲突

例子

  • 如果没有前缀
    ng g c header
    ,将生成一个与HTML header元素冲突的元素
    。所以我们在它前面加上
  • 如果没有前缀
    ng g d title
    ,将生成与HTML title属性冲突的属性
    title
    。因此,我们在它前面加上
    appTitle
  • 最后,
    nggpdata
    生成一个名为
    data
    的管道。它在特定于角度的代码
    {{myData | data}}
    中处理,因此它不会干扰任何内容

也许您应该让Angular团队得到准确答案?谢谢您的回答!我假设一个模块导入两个模块(甚至可能是第三方模块)的可能性很低,其中两个模块都以相同的名称导出管道?或者如何处理这种情况?@SamHerrmann这是个好问题。我认为这是一个罕见的案例。我认为没有一个优雅的方式来处理这个问题。一种可能的解决方法是创建一个自定义管道,该管道实质上“重命名”了库管道。看看这场闪电战。虽然不优雅,但这是一个可能的解决方案。理想情况下,如果存在名称冲突,库将为管道添加前缀。