Angular: привязать к псевдониму @Input
Я пытаюсь установить псевдоним ввода в директиве, следующей за этим примером
@Input('appAvatarColor') name: string;
Программа работает, но я получаю это предупреждение от TS Lint
свойство ввода директивы не должно быть переименовано
Селектор директивы это
@Directive({
selector: '[appAvatarColor]'
})
Я что-то не так делаю?
Почему это считается плохой практикой по умолчанию?
Ответы
Ответ 1
Вы можете отключить правило в 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
Ответ 2
Вы можете реализовать это следующим образом:
@Input() appAvatarColor: string;
Ответ 3
Вы должны переименовать @Input('appAvatarColor') name: string;
для чего-то другого, чтобы это отличалось от названия директивы. Вы можете использовать имя @Input('avatarColor') name: string;
а затем упростить его с помощью @Input() avatarColor: string;