2017-06-01 40 views

回答

1

您還需要一個get的比例,否則,您的第二個版本是正確的。

下面是一個例子

@Component({ 
    selector: 'ratio-display', 
    template: '<span>{{ratio.w/ratio.h}}</span>' 
}) 
export class RatioDisplay { 
    ratio_ = {w: 1, h: 1}; 

    @Input() set ratio (ratio: {w: number, h: number}) { 
    if(ratio) { 
     this.ratio_ = ratio; 
    } 
    } 
    get ratio() { 
    return this.ratio_; 
    } 
} 

@Component({ 
    selector: 'app', 
    template: ` 
    <div> 
     <ratio-display [ratio]="ratio"></ratio-display> 
    </div> 
    `, 
}) 
export class App { 
    ratio = {w: 30, h: 45}; 
} 

工作Plnkr可以在這裏找到:https://plnkr.co/edit/4TuMEzfDB6hxyGbC6csQ?p=preview

當然,唯一的原因,你需要一個二傳手在這種情況下,如果要謹防被傳遞無效的成分,如果你只是想要一個簡單的值綁定到,你可以使用

@Component({ 
    selector: 'ratio-display', 
    template: '<span>{{ratio.w/ratio.h}}</span>' 
}) 
export class RatioDisplay { 
    @Input() ratio = {w: 1, h: 1}; 
} 

文字也可以直接從傳遞的對象您的模板

<ratio-display [ratio]="{w: 30, h: 45}"></ratio-display> 

https://plnkr.co/edit/4TuMEzfDB6hxyGbC6csQ?p=preview

+0

嗯這個代碼是一個獨立的組件的一部分,它不喜歡的工作。沒有getter,它應該直接從HTML標籤屬性中獲取值。我知道它是可行的,因爲它已經在過去實施過了,但它被刪除了,代碼中沒有引用它的地方,只是組件本身。 –

+0

@LucianoFantuzzi很抱歉,我之前誤讀了,我又添了一個例子,沒有getter或setter,並且直接通過標記傳遞值。你有很多選擇。 –

+0

是啊!就是這樣!謝謝你,兄弟!我前段時間閱讀了一些關於避免「感謝」的消息,但是......在這裏,你是! –

相關問題