Angular 没有未使用的变量TSLint规则不适用于private@HostBinding

Angular 没有未使用的变量TSLint规则不适用于private@HostBinding,angular,angular6,encapsulation,tslint,angular2-hostbinding,Angular,Angular6,Encapsulation,Tslint,Angular2 Hostbinding,在我的TSLint文件中,我有: "no-unused-variable": true 在我的组件中,我有时有: // tslint:disable-next-line:no-unused-variable @HostBinding('class') private classes = 'my-theme'; 因为classes是私有的,所以TSLint会抱怨,所以每次我都必须禁用TSLint 由于封装,我不想将@HostBinding公开 解决这个问题的推荐方法是什么?据我所知,您有两种选

在我的TSLint文件中,我有:

"no-unused-variable": true
在我的组件中,我有时有:

// tslint:disable-next-line:no-unused-variable
@HostBinding('class') private classes = 'my-theme';
因为
classes
是私有的,所以TSLint会抱怨,所以每次我都必须禁用TSLint

由于封装,我不想将
@HostBinding
公开


解决这个问题的推荐方法是什么?

据我所知,您有两种选择

1-使用受保护的
。自我解释:

@HostBinding('class')受保护的类='my theme';
2-使用
忽略模式
。根据,此规则将忽略与指定模式匹配的变量和导入名称。该模式是一个正则表达式,
^
表示以
\
开头的任何字符串

tslint.json:

...
"no-unused-variable": [true, {"ignore-pattern": "^_"}]
...
组成部分:

@HostBinding('class')private\u classes='my theme';
奖金

如果您的变量是只读的,您也可以执行以下操作之一。它不会阻止tslint错误,但如果您担心封装会意外修改变量,它会阻止意外修改变量

@HostBinding('class')私有只读类='my theme';
@HostBinding('class')private get classes(){return'my theme';}

经过一些研究后,解决方案是将其公开

@HostBinding('class') public classes = 'my-theme';
这是因为从Angular的角度来看,它访问组件,类似于
component.classes
。因此,在语义上,它是公共的。这也是为什么
@Input
应该是公共的,即使您在模板中没有使用它

资料来源:


它认为自己未使用是一个bug吗?如果只在构造函数中使用它,则不需要单词
private
。我认为tslint会抱怨,当您将某个对象作为实例变量并仅在构造函数中使用它时。