指令“TrimInputDirective”的选择器应该有一个前缀 - Angular Directive Linting Issue

时间:2018-05-31 12:32:14

标签: angular angular-directive

我已经编写了一个使用CSS输入选择器来定位HTML输入的指令(我已经缩短了代码以便于阅读):

const TRIM_VALUE_ACCESSOR: any = {
  provide: NG_VALUE_ACCESSOR,
  useExisting: forwardRef(() => TrimInputDirective),
  multi: true
};

@Directive({
  selector: `
    input
    :not([type=checkbox])
    :not([type=radio])
    :not([type=password])
    :not([readonly])
    :not(.ng-trim-ignore)
    [formControlName],
  `,
  providers: [ TRIM_VALUE_ACCESSOR ]
})
export class TrimInputDirective extends DefaultValueAccessor {
 // do stuff...
}

这一切都符合我的预期但是我注意到我的linting给了我以下错误:

  

错误:app / shared / directives / trim-input.directive.ts [18,13]:The   指令“TrimInputDirective”的选择器应该有一个   前缀“myapp,if,file,use”   (https://angular.io/styleguide#style-02-08

现在我不能这样做,因为我的选择器不是我要添加到HTML元素的已定义属性。如何在不将代码包含在/* tslint:disable *//* tslint:enable */注释标记中的情况下解决此错误?

非常感谢提前

1 个答案:

答案 0 :(得分:0)

根据预期结果,有许多不同的方法可以解决这个问题。

如果您想全面禁用此类检查,则可以更新tslint.json文件。感兴趣的属性有两个:directive-selector": false"component-selector": false。如果你只是想停止指令或组件的linting错误,你可能会关闭一个或另一个。

或者,这些属性可以获取值列表,因此您可以将它们更新为以下内容:

"directive-selector": [
      true,
      "element",
      "myapp"
]

如果只有少数几个地方可以执行此操作,您也可以在代码中使用/* tslint:disable-next-line */,这样您就不必禁用然后重新启用linting。它只会忽略该评论后的行。