Angular2中的装饰器@Input()和@Attribute()之间的主要区别是什么?

Ale*_*lex 8 angular

我已经看到@Attribute()通常在指令中用作构造函数中的参数,如下所示:

export class EqualValidator implements Validator {
    constructor( @Attribute(‘validateEqual’) public validateEqual: string) {}
    validate(c: AbstractControl): { [key: string]: any } {}
}
Run Code Online (Sandbox Code Playgroud)

和@Input()在这样的组件中使用:

export class UserProfile {
    @Input() user;
    constructor() {}
}
Run Code Online (Sandbox Code Playgroud)

然后,在@Input()的情况下,您可以使用属性绑定将数据传递到模板中的这些变量.

这些装饰器之间的主要区别是什么?何时应该使用它们?

Ha *_*ang 5

@Input():用于将值传递到指令或将数据从一个组件传递到另一组件(通常是父级到子级)。

@Attribute():您可以检索组件/指令的宿主元素中可用的属性的常量值,并且必须将其与组件或指令的构造函数的参数一起使用

希望有帮助!

  • 由于您的最后一个问题尚未得到解答,我将为未来的访问者这样做:是的,当涉及到输入属性时,性能是关键 - 如果您知道该值将是恒定的。有关更详细的版本,请参阅此处:https://netbasal.com/getting-to-know-the-attribute-decorator-in-angular-4f7c9fb61243 (2认同)