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;