首页 > 解决方案 > angular2+ tslint 在使用 forwardRef 时显示“声明前使用的变量 xxx”

问题描述

我正在使用“forwardRef”来编写一个自定义表单组件。它可以工作,但是在运行 ng lint 时,会显示“声明前使用的变量 FormMultiInputComponent”。那么如何避免错误呢?

export const EXE_COUNTER_VALUE_ACCESSOR: any = {
  provide: NG_VALUE_ACCESSOR,
  useExisting: forwardRef(() => FormMultiInputComponent),
  multi: true
};

@Component({
  selector: 'cmss-form-multi-input',
  templateUrl: './form-multi-input.component.html',
  styleUrls: ['./form-multi-input.component.scss'],
  providers: [EXE_COUNTER_VALUE_ACCESSOR]
})

标签: angularangular6tslint

解决方案


要解决此问题,您可以"no-use-before-declare": false在 TSLINT json 文件上进行设置

来自文档

此规则主要在使用 var 关键字时很有用,因为编译器会在声明之前自动检测是否使用了块范围的 let 和 const 变量。由于大多数现代 TypeScript 不使用 var,因此通常不鼓励使用此规则,并将其保留用于遗留目的。它的计算速度很慢,在内置配置预设中未启用,并且不应用于通知 TSLint 设计决策。


推荐阅读