Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2中的decorators@Input()和@Attribute()之间的主要区别是什么?_Angular - Fatal编程技术网

Angular2中的decorators@Input()和@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

我见过@Attribute()在指令中被用作构造函数中的参数,如下所示:

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()?我还是不明白他们之间的区别。我知道一个在构造函数中被声明为参数,一个被声明为属性。请看一个简单的例子。因为你的最后一个问题还没有回答,我将为未来的访问者这样做:是的,当属性超过输入时,性能是关键-如果你知道值将是常量。有关更详细的版本,请参见此处: