5

是否可以隐藏inputprimeng日历中的字段,只显示图标?我不想将p-calendar元素更改为内联,而只是显示将弹出日历的图标。

组件.html

<div class="ui-g-12 ui-md-4">
  <p-calendar class="foo-cal" appendTo="body" readonlyInput="true" dateFormat="yy/mm/dd" [(ngModel)]="date" [showIcon]="true"></p-calendar>
</div>

我尝试了以下方法,但没有成功:

body .ui-calendar.ui-calendar-w-btn .ui-inputtext {
    display: none !important;
}

p-calendar span input {
    display: none !important;
}

但是,如果我将属性添加到元素,则使用浏览器中的 devtools display: none;,它将仅隐藏图标。有什么想法可以让它在没有输入字段的情况下呈现 html 文件吗?

4

2 回答 2

2

您只需要为 p-calendar 组件创建一个自定义样式

<div class="ui-g-12 ui-md-4">
  <h3>Icon</h3>
  <p-calendar styleClass="only-icon" [(ngModel)]="date" [showIcon]="true"></p-calendar>
</div>

样式.scss

.only-icon {
 .ui-inputtext{
   display: none;
 }
 button.ui-datepicker-trigger.ui-calendar-button  {
   border-radius: 4px !important;
 }
}

演示⚡⚡

将此样式应用于所有组件,无需任何客户类

p-calendar {
 .ui-inputtext{
   display: none;
 }
 button.ui-datepicker-trigger.ui-calendar-button  {
   border-radius: 4px !important;
 }
}

上面的样式适用于p-calendar所有项目。

于 2019-09-08T20:11:53.663 回答
1

我认为如果您为 input 设置 display none ,用户在点击时看不到日历,但您可以使用此 css 代码进行输入并将您的图标显示为背景图像中的图像。

input{
    border: none;
    background-image: url(your-icon-address);
    color: transparent;
    text-shadow: 0 0 0 #fff;
    cursor:pointer;
    /*width:somthing; if you need*/
    /*height:somthing; if you need*/
}
input:focus{
    outline:0;
}

您可以将宽度和高度输入设置为与图标相同。

于 2019-09-08T20:39:20.380 回答