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

时间:2017-02-13 18:30:27

标签: angular

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

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

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

export class UserProfile {
    @Input() user;
    constructor() {}
}

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

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

1 个答案:

答案 0 :(得分:4)

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

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

希望这有帮助!