Angular - 如果已定义,则仅限渲染元素属性

时间:2018-01-23 10:26:52

标签: angular

如果定义了元素属性,Angular中是否可以仅渲染它?

例如,我有一个按钮组件

export class ButtonComponent {
  /** The name id to be given to the button */
  @Input() id: string;
  /** The name to be given to the button */
  @Input() name: string;
}

使用模板

<button 
        [id]="id"
        [name]="name"
        >
    <ng-content></ng-content>
</button>

如果我传递了一个id而不是一个名字,它会呈现一个名称属性,其值为undefined。

<button _ngcontent-c1="" id="login" name="undefined">
    Login
</button>

如果没有像下面那样提供名称输入,是否可以不渲染name属性?

<button _ngcontent-c1="" id="login">
    Login
</button>

1 个答案:

答案 0 :(得分:2)

如果属性绑定,如果我们将nullundefined传递给它,则angular将不会呈现属性。所以你的解决方案看起来像:

[attr.name]="name"