【问题标题】:Assigning an Alias to @Output() and @Input() show TSLint Error为 @Output() 和 @Input() 分配别名显示 TSLint 错误
【发布时间】:2019-05-22 05:31:32
【问题描述】:

我正在尝试为 @Output 分配一个别名,但出现 TSLint 错误,

export class CockpitComponent implements OnInit {
  @Output('bpCreated') blueprintCreated = new EventEmitter<{ serverName: string, serverContent: string }>();
  @Output('srvCreated') serverCreated = new EventEmitter<{ serverName: string, serverContent: string }>();

TSLint:在“CockpitComponent”类中,指令输出属性“serverCreated”不应重命名。请考虑以下使用“@Output() serverCreated = new EventEmitter();” (无输出重命名)

那么什么时候应该在 Angular 中为 @Output() 和 @Input() 分配别名?

【问题讨论】:

    标签: angular typescript tslint


    【解决方案1】:

    这是tsLint 错误,很明显你不应该重命名它

    要么

    @Output() blueprintCreated ...
    

    或

    @Output() bpCreated ...
    

    或者如果你坚持让它在每一行的顶部添加这个评论,它会忽略它

    // tslint:disable-next-line:no-output-rename
    @Output('bpCreated') blueprintCreated
    

    【讨论】:

    • 我认为 Angular 框架的一个特性应该优先于 tslint 规则。打开tslint.json 并添加(或编辑)键no-output-rename 以获得值false。
    • @MikedeKlerk 你可以这样做,但我不同意,始终遵循最佳实践,所以在这种情况下,选项 1 和 2 是好的选择
    【解决方案2】:

    您可以从 Webstorm Preferences 启用 tslint(并抑制当前行的错误)

    我在我的代码中这样做了:

    // tslint:disable-next-line:no-output-native
    @Output() close = new EventEmitter();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 2020-12-22
      • 2016-05-26
      • 2015-08-17
      • 2022-06-12
      • 1970-01-01
      • 2019-10-19
      相关资源
      最近更新 更多