为什么`@ input`装饰器优先于`inputs:[]`

时间:2016-11-17 17:25:06

标签: javascript angular

有两种方法可以在组件上定义输入:

@Component({
    inputs: ['displayEntriesCount'],
    ...
})
export class MyTable implements OnInit {
    displayEntriesCount: number;

和这个

@Component({
   ...
})
export class MyTable implements OnInit {
    @Input() displayEntriesCount: number;

我认为第一种方法更好,因为它明确地声明组件的依赖关系,而不需要检查补充类。但是,着名开发人员this article表示第二种方法更可取:

  

使用@Input是首选方法,但我们不必使用它。

任何想法为什么?

2 个答案:

答案 0 :(得分:4)

风格指南在某种程度上是首选,但没有强有力的论据。 也许是因为属性和方法与绑定一起保存。 但你的论点也是有效的。有些人喜欢那个,有些喜欢另一个。

如果您更喜欢host: ...,请使用它。它仍然很常见。

答案 1 :(得分:3)

每个角度风格指南https://angular.io/docs/ts/latest/guide/style-guide.html#!#-a-id-05-12-a-decorate-input-and-output-properties-inline

内联输入和输出属性

  

使用@Input和@Output代替输入和输出属性   @Directive和@ Component`装饰器:

     

将@Input()或@Output()放在与属性相同的行上   他们装饰。

  • 为什么呢?识别类中的哪些属性是输入或输出更容易,更易读。

  • 为什么呢?如果您需要重命名与@Input或@Output关联的属性或事件名称,则可以将其修改为一个位置。

  • 为什么呢?附加到指令的元数据声明更短,因此更具可读性。

  • 为什么呢?将装饰器放在同一行上可以缩短代码,并且仍然可以轻松地将属性标识为输入或输出。