2016-03-07 32 views
16

說我有,將顯示一個name性的成分,所以它大致是這樣的:如何在Angular2中設置@Input的默認參數?

import {Component, Input} from 'angular2/core'; 
 

 
@Component({ 
 
    selector: 'demo', 
 
    template: `<div>{{name}}</div>`, 
 
    styles: [``], 
 
}) 
 
export class Demo { 
 
    @Input() name: string; 
 
}

的問題是,我怎麼能顯示[noname]當有人使用該組件,但不通過任何name財產?

想到的唯一解決方案是在模板內使用邏輯運算符,如{{ name || '[noname]' }}

回答

33

嘗試

@Input() name: string = 'noname'; 
+0

這對我不起作用。它使用默認值,即使我將其設置爲模板中的另一個值。 –

0

我想你可以用你使用模板的想法。因此,這將是:

在組件:

@Input() name:String; 

模板:

<div>{{ name != '' ? name : '[no name]' }}</div> 

這將檢查是否該名稱爲空,且使用「[無名]」或插入該名稱如果通過該名稱。

0

在組件你應該初始化,如:

@Input() name:String=''; 

在HTML,您可以使用:

{{ name ===''? 'empty string': name }} 
0

您可以攔截@Input()與二傳手,並經私人領域的支持。在setter中,你做一個nullcheck,所以field只被設置爲一個非null值。最後,你將你的模板綁定到你已經設置了初始值的私有域。

相關問題