代码之家  ›  专栏  ›  技术社区  ›  Guerric P

如果元素上的指令/输入名称之间发生冲突,该怎么办?

  •  1
  • Guerric P  · 技术社区  · 6 年前

    因为指令名和输入名在角度上共享相同的名称空间(它们被称为它们的唯一名称)。如果名字有冲突怎么办?

    示例:我在同一个元素上使用两个指令,这两个指令有一个同名的输入,而我没有处理这些名称,因为它们来自外部库。

    0 回复  |  直到 6 年前
        1
  •  0
  •   filipe    6 年前

    您可以用另一个名称创建一个新指令,并使用一个简单地扩展原始指令的类,然后可以绑定到@input属性。

    @Directive({
      selector: '[appHighlight]'
    })
    export class HighlightDirective extends OriginalHighlightDirective {
    
      constructor(private el: ElementRef) { super(el); }
    
      @Input('aliasInputColor') originalInputName: string;
    
    }
    

    然后可以使用AliasinputProperty:

    <p appHighlight aliasInputColor="yellow">Highlight me!</p>