2017-02-13 55 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

相關問題