2016-03-07 170 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值。最后,你将你的模板绑定到你已经设置了初始值的私有域。