Angular:绑定到@Input别名

Dou*_*eri 28 angular

我试图在此示例后面的指令中设置输入别名

  @Input('appAvatarColor') name: string;
Run Code Online (Sandbox Code Playgroud)

该计划正在运作,但我收到TS Lint的警告

不应重命名指令输入属性

指令选择器就是这个

@Directive({
  selector: '[appAvatarColor]'
})
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

yur*_*zui 41

您可以关闭规则 tslint.json

"no-input-rename": false
Run Code Online (Sandbox Code Playgroud)

或禁用仅检查特定行的检查:

// tslint:disable-next-line:no-input-rename
@Input('appAvatarColor') name: string;
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么默认情况下这被认为是一种不好的做法?

  • 同一财产的两个名称(一个私人,一个公共)本质上令人困惑.

  • 当指令名也是输入属性时,您应该使用别名,并且指令名称不描述该属性.

来自https://angular.io/docs/ts/latest/guide/style-guide.html#!#05-13


小智 22

您可以通过以下方式实现它:

@Input() appAvatarColor: string;
Run Code Online (Sandbox Code Playgroud)

  • 我相信您没有在这里添加别名,您只是将变量声明为“appAvatarColor”而不是“name” (2认同)

gil*_*niy 5

您应该重命名@Input('appAvatarColor') name: string;为其他名称以使其与指令名称不同。你可以做@Input('avatarColor') name: string;然后简化它@Input() avatarColor: string;