2016-11-28 53 views
2

我使用Sublime Text 3和ESLint。检测角2模板文字中变量的用法

当我使用模板文字语法定义我的Angular 2模板时,出于某种原因,ESLint没有捕获到方法和属性的用法。

例子:

@Component({ 
    ..., // omitted for brevity 
    template: ` 
     <button class="btn btn-primary" (click)="toggleOpenAssessment()"> 
      {{ isOpen ? 'close' : 'open' }} assessment 
     </button> 
    ` 
}) 
export class MyComponentComponent { 
    private isOpen: boolean = false; 

    private toggleOpenAssessment() { return true; } 
} 

的错误,我从ESLint获得:

  • 未使用的方法: 'toggleOpenAssessment'
  • 未使用的属性: 'ISOPEN'

有谁知道如何调整ESLint来检测我在模板文字中使用的方法和属性也是?

回答

1

不幸的是,我发现目前这个问题的解决方案不存在。

连接到此行为的属性是TSLint的no-unused-variable

检查引用的Angular 2模板文件(或模板文本)超出了TSLint的范围,因为它们依赖于TypeScript的语言服务API来查找值的出现。

我终于found a related GitHub issueanswer from Adi Dahiya。他说:

让tslint查看Angular模板非常复杂。为了做到这一点,我们确实需要使用Angular的模板表达式解析器来获得100%的兼容性,然后将Angular作为TypeScript语言服务的扩展。我们接近角模板的VSCode支持的第一个版本。不久之后,我想弄清楚这个枯燥的故事。

这给我们留下了短短丑陋的变通办法:

  • 没有在TSLint配置在所有
  • 开关使用private性关闭no-unused-variable标志

我希望在不久的将来,他们找到一种方法来做到这一点非常棒!

PS:此外,还有a proposal for no-unused-variable deprecation

+0

我发现了'template-use-public'类似的问题。 codelyzer的最新版本似乎没有注意到在模板中使用私有成员。 –