角度指令选择器和tslint

时间:2018-03-30 05:18:37

标签: angular angular2-directives tslint

我使用angular 4指令来定义角度属性指令。 但我想将此指令用作类。我的定义是(它工作正常):

@Directive({
  selector: '.input-field'
})

这是根据角度选择器定义( .class 一个)

enter image description here

但是我得到了一个tslint错误如下:

tslint error

有没有办法在不禁用tslint规则的情况下修复此错误?

4 个答案:

答案 0 :(得分:1)

在这种情况下,您的规则会阻止您使用类选择器,因此您必须禁用它。问题是全局禁用它?

您可以在代码块中禁用特定规则:

/* tslint:disable: no-use-before-declare */

some code breaking no-use-before-declare rule

/* tslint:enable: no-use-before-declare */

或者你可以为下一行禁用整个tslint

// tslint:disable-next-line
some code breaking all the rules
normal code

答案 1 :(得分:1)

我遇到了同样的错误,并在GitHub上提出了一个问题。这是我得到的答案:

  

虽然Angular确实支持指令的类选择器,但是此功能仅应在特殊情况下使用,因为它使您难以理解模板的哪些部分是常规类以及哪些是指令。这就是为什么此语法是tslint警告而不是编译错误的原因。

     

如果您坚持使用此选择器样式,则可以更改tslint配置,或在代码中使用tslint忽略注释作为呼叫站点的前缀,但是如果坚持使用属性选择器,则可以使您的生活和他人的生活更轻松。

这不是很令人满意,但是似乎没有办法解决。

答案 2 :(得分:1)

就我而言,问题在于以下数组类型:

public dateFormats: Array<{ format: string, eq: string }> = [...];

不使用通用语法修复了错误。

我肯定会考虑从 tslint 迁移到 eslint,因为对 Angular CLI 的支持已停止。

答案 3 :(得分:0)

要在同一项目中验证多个前缀,只需使用以下内容(在tslint.json文件中):

...
"component-selector": [true, "element", ["app", "my-awsome-prefix", "another-prefix"], "kebab-case"],
...

与指令相同:

...
"directive-selector": [true, "attribute", ["app", "myDirectivePrefix"], "camelCase"],
...