我已经编写了一个使用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 */
注释标记中的情况下解决此错误?
非常感谢提前
答案 0 :(得分:0)
根据预期结果,有许多不同的方法可以解决这个问题。
如果您想全面禁用此类检查,则可以更新tslint.json
文件。感兴趣的属性有两个:directive-selector": false
,"component-selector": false
。如果你只是想停止指令或组件的linting错误,你可能会关闭一个或另一个。
或者,这些属性可以获取值列表,因此您可以将它们更新为以下内容:
"directive-selector": [
true,
"element",
"myapp"
]
如果只有少数几个地方可以执行此操作,您也可以在代码中使用/* tslint:disable-next-line */
,这样您就不必禁用然后重新启用linting。它只会忽略该评论后的行。