2016-06-20 66 views
2

我創建一個組件在整個我的應用程序可以重複使用,下面角2遍變量構造在HTML

.TS

export class DieInputComponent { 
    constructor(private sides: Number, private dice: Number) { 
    } 
} 

重要的代碼的.html

<input type="number" placeholder="{{dice}}d{{sides}}"/> 

我在我的html模板中創建這些對象像這樣

<die-input></die-input> 

我將如何去輸入HTML標記中的構造函數變量?對於我的生活,我找不到如何做到這一點的適當參考。

+0

我還沒有見過任何人將普通變量傳遞給組件構造函數。通常情況下,您會將服務傳遞給它,例如偏好服務。當你得到服務的句柄時,你可以初始化這個對象。 – Zen

+0

對於要傳遞給組件或服務的構造函數的參數(通過DI實例化,您需要提供具有匹配類型或字符串鍵的值,並且DI會爲您傳遞它們。您無法直接將構造函數參數傳遞給這些類。 –

回答

3

如果你需要一些值可用組件類裏面,然後簡單地使用@input變量和傳遞價值你的組件的屬性

export class DieInputComponent{  
    @Input()sides:Number; 
    @Input()dice:Number; 
} 
    <die-input [sides]='6' [dice]='1'></die-input> 
3

您可以通過在構造函數中使用@Attribute關鍵字來獲取屬性值。這會給你正在搜索的屬性的字符串值。爲了您的例子那就是:

export class DieInputComponent { 
    constructor(@Attribute('placeholder') theInput: string) { 
    // theInput.length > 0? 
    // theInput.split into dice/sides and parse into integers 
    } 
} 

你可以閱讀更多關於@Attribute這裏:angular.io docs