Angular2中的decorators@Input()和@Attribute()之间的主要区别是什么?
我见过@Attribute()在指令中被用作构造函数中的参数,如下所示:Angular2中的decorators@Input()和@Attribute()之间的主要区别是什么?,angular,Angular,我见过@Attribute()在指令中被用作构造函数中的参数,如下所示: export class EqualValidator implements Validator { constructor( @Attribute(‘validateEqual’) public validateEqual: string) {} validate(c: AbstractControl): { [key: string]: any } {} } export class UserProf
export class EqualValidator implements Validator {
constructor( @Attribute(‘validateEqual’) public validateEqual: string) {}
validate(c: AbstractControl): { [key: string]: any } {}
}
export class UserProfile {
@Input() user;
constructor() {}
}
和@Input()用于以下组件:
export class EqualValidator implements Validator {
constructor( @Attribute(‘validateEqual’) public validateEqual: string) {}
validate(c: AbstractControl): { [key: string]: any } {}
}
export class UserProfile {
@Input() user;
constructor() {}
}
然后,在@Input()的情况下,可以使用属性绑定将数据传递到模板中的这些变量中
这些修饰符之间的主要区别是什么?何时使用它们?@Input():用于将值传递到指令或将数据从一个组件传递到另一个组件(通常是父组件到子组件)
@Attribute():可以检索组件/指令的宿主元素中可用的属性的常量值,并且必须与组件或指令的构造函数的参数一起使用
希望这有帮助 谢谢你的回答。我理解@Input()的解释,但不理解@Attribute()。属性的常量值是什么意思?另外,我不明白为什么在某些情况下,你会想在@Input()上使用@Attribute()。使用@Attribute,我们可以将html上属性的常量值映射到组件上的属性。常量值是什么意思?就像一根无法改变的绳子?它必须是字符串吗?或者它可能是一个复杂的对象?您希望何时使用@Attribute()而不是@Input()?我还是不明白他们之间的区别。我知道一个在构造函数中被声明为参数,一个被声明为属性。请看一个简单的例子。因为你的最后一个问题还没有回答,我将为未来的访问者这样做:是的,当属性超过输入时,性能是关键-如果你知道值将是常量。有关更详细的版本,请参见此处: