2016-10-03 59 views
4

我有以下組成部分:角2 @input數量問題

<component value="3"></component> 

和組件代碼:

private _value:number; 

    get value(): number { 
    return this._value; 
    } 

    @Input() 
    set value(value: number) { 
    console.log(value); 
    console.log(typeof value); 
    this._value = value; 
    } 

日誌是:

3 
string 

但是,如果我綁定財產如:

<component [value]="variable1"></component> 

在這種情況下,如果variable1是類型編號,我會得到一個數字。

3 
number 

我知道打字稿沒有什麼魔力,但這是正確的行爲嗎? Angular Input裝飾器應該進行轉換嗎?

我正在檢查setter中的類型,但是當打字稿正在編譯時我收到錯誤。

我不想在gettes和setter中使用type any。

任何優雅的解決方案?

+0

參見http://stackoverflow.com/questions/39817094/input-attribute-does-not-receive-data/ 39817212#39817212 – yurzui

回答

4

當與括號[]綁定時,該值直接綁定在對象上。

使用屬性綁定時,引號之間的值被處理爲字符串。

Maybe have a look at the docs.


工作Plunker例如使用

+0

我知道所有這一切,答案與此無關。 – Serginho

+0

這就是Angular 2如何工作 - 它甚至在文檔中告訴你。沒有括號(屬性綁定),你不會綁定到實際的變量,而只是一個字符串解釋。那麼你的問題是什麼? – rinukkusu

+0

如何在輸入裝飾器中始終獲取類型編號? – Serginho