Angular: Bind to an @Input alias

后端 未结 4 1358
一整个雨季
一整个雨季 2021-02-06 22:21

I\'m trying to set an input alias in a directive following this example

  @Input(\'appAvatarColor\') name: string;

The program is working, but

相关标签:
4条回答
  • 2021-02-06 22:47

    You should rename @Input('appAvatarColor') name: string; to something else for this to differ from the directive name. You can do @Input('avatarColor') name: string; and then simplify it by @Input() avatarColor: string;

    0 讨论(0)
  • 2021-02-06 22:50

    The right way to do it should be the following:

    @Input() appAvatarColor: string;
    
    0 讨论(0)
  • 2021-02-06 23:09

    You can either turn off rule in tslint.json

    "no-input-rename": false
    

    or disable checking for only specific line like:

    // tslint:disable-next-line:no-input-rename
    @Input('appAvatarColor') name: string;
    

    My question is why is this considered a bad practice by default?

    • Two names for the same property (one private, one public) is inherently confusing.

    • You should use an alias when the directive name is also an input property, and the directive name doesn't describe the property.

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

    0 讨论(0)
  • 2021-02-06 23:11

    You can implement it the following way :

    @Input() appAvatarColor: string;
    
    0 讨论(0)
提交回复
热议问题