2017-02-13 139 views
7

我看到指令正在使用@Attribute()通常作为在构造这样的参数:)中的组件使用类似这样的Angular2中的装饰器@Input()和@Attribute()之间的主要区别是什么?

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()的情况下,可以使用属性绑定将数据传递到模板中的这些变量。

这些装饰器和你应该什么时候使用它们有什么区别?

回答

4

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

@Attribute():您能检索组件/指令的主元素可用的属性的恒定值,并且它必须与组件的的参数或指令的构造

希望这可以使用帮帮我!

+0

谢谢你的回答。我理解@Input()的解释,但不理解@Attribute()。一个属性的不变价值是什么意思?另外我不明白为什么你想在某些情况下使用@Input()来使用@Attribute()。 – Alex

+0

使用@Attribute,我们可以将html上属性的常量值映射到组件上的属性。 –

+0

你的意思是不变的价值?就像一个不能改变的字符串?它必须是一个字符串吗?或者它可能是一个复杂的对象?您何时想使用@Attribute()而不是@Input()?我仍然不明白他们之间的区别。我知道一个在构造函数中声明为参数,另一个声明为属性。 – Alex

相关问题