我正在尝试在此示例之后的指令中设置输入别名
@Input('appAvatarColor') name: string;
该程序正在运行,但我收到来自 TS Lint 的警告
不应重命名指令输入属性
指令选择器是这个
@Directive({
selector: '[appAvatarColor]'
})
我做错了什么吗?
为什么默认情况下这被认为是一种不好的做法?
您可以在tslint.json
中关闭规则
"no-input-rename": false
或禁用仅检查特定行,例如:
// tslint:disable-next-line:no-input-rename
@Input('appAvatarColor') name: string;
我的问题是为什么默认情况下这被认为是一种不好的做法?
同一属性的两个名称(一个私有,一个公共(本质上是令人困惑的。
当指令名称也是输入属性,并且指令名称未描述该属性时,应使用别名。
从 https://angular.io/docs/ts/latest/guide/style-guide.html#!#05-13
您可以通过以下方式实现它:
@Input() appAvatarColor: string;
<</div>
div class="one_answers">您应该将@Input('appAvatarColor') name: string;
重命名为其他名称,以使它与指令名称不同。您可以执行@Input('avatarColor') name: string;
,然后通过@Input() avatarColor: string;
来简化它
使用新的 Angular 版本,tslint 消失了,我们需要使用 eslint
.对于 Eslint,您需要修改.eslintrc.json
文件中的rules
并添加"@angular-eslint/no-input-rename"
,如下所示。
例:
"rules": {
// ..... some rules
"@angular-eslint/no-input-rename": [
"warn",
{
"allowedNames": ["name"]
}
],
//.... more rules
}
正确的方法应该是:
@Input() appAvatarColor: string;