如何在下拉菜单中将标签设置为空字符串?

时间:2018-12-05 18:42:48

标签: angular typescript primeng multi-select

我正在处理这个简单的 multiselect下拉列表,并且我想将标签设置为(空字符串)。但是,当我使用 defaultLabel 时,它似乎无法正常工作。有没有办法将标签(测试)默认设置为空字符串?

非常感谢!

这是我的代码:

<p-multiselect
    [options]="registrationStatus"
    [defaultLabel]= "someText"
    [showHeader]="false">
</p-multiSelect>

LIVE DEMO

2 个答案:

答案 0 :(得分:2)

您可以将空字符串设置为defaultLabel,并定义一个全局css类,该类将覆盖控件的默认样式并设置初始大小。如果要从特定宽度开始,还可以在样式中设置最小宽度。然后,您使用styleClass属性应用CSS类。官方文档here中提到了这一点。

这是要放在应用程序的全局CSS中的样式:

.multipleSelectSize {
  height: 30px;
  min-width: 100px;
}

.multipleSelectSize > .ui-multiselect-label-container > .ui-multiselect-label {
  height: 27px;
}

以及应用样式的html模板:

<p-multiSelect [styleClass]="'multipleSelectSize'" [options]="registrationStatus" [defaultLabel]= "someText" [showHeader]="false"></p-multiSelect>

这里也是StackBlitz link

答案 1 :(得分:0)

这是一个相对简单的解决方法:将默认标签设置为所需长度的字符串,例如“ Default”。然后,在没有选定项目的情况下,使用MultiSelectComponent上提供的[style]属性有条件地应用color: transparent。这样,您不必处理适当设置高度或宽度的问题。

<p-multiSelect [options]="registrationStatus" [defaultLabel]="someText"
    [(ngModel)]="selectedItems" [showHeader]="false"
    [style]="getDefaultLabelStyle()">
</p-multiSelect>

someText: string = 'Default';
selectedItems: Array<Object> = [ ];

getDefaultLabelStyle() {
    return (this.selectedItems.length === 0) ?
        { color: 'transparent' } : null;
}

完整StackBlitz here