在Angular 2模板文字中检测变量的使用

时间:2016-11-28 14:36:38

标签: angular sublimetext3 sublimetext eslint tslint

我正在使用Sublime Text 3和ESLint。

当我使用模板文字语法定义我的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获得的错误:

  • 未使用的方法:&#39; toggleOpenAssessment&#39;
  • 未使用的财产:&#39; isOpen&#39;

有人知道如何调整ESLint以检测我在模板文字中使用的方法和属性吗?

1 个答案:

答案 0 :(得分: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支持角度模板的第一个版本。不久之后我想弄明白这个故事。

这给我们留下了一些丑陋的解决方法:

  • 根本不使用private属性
  • 关闭TSLint配置中的no-unused-variable标志

我希望在不久的将来他们能找到一种方法来实现这个非常棒的功能!

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