我看到@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()的情况下,您可以使用属性绑定将数据传递到模板中的这些变量。
这些装饰者之间的主要区别是什么?你何时应该使用它们?
答案 0 :(得分:4)
@Input():用于将值传递给指令或将数据从一个组件传递到另一个组件(通常是父对子)。
@Attribute():您可以检索组件/指令的host元素中可用属性的常量值,并且它必须与组件或Directive的构造函数的参数一起使用
希望这有帮助!