12

我有一个奇怪的错误,我使用 PrimeNG 在我的应用程序中显示 DatePicker。当我尝试使用 bootstrap'sform-control时,我得到一个视觉错误。

这是我的模板:

<div class="form-group row">
    <div class="form-group col-md-2">
        <label for="valeur">Valeur</label>
        <input type="number" id="valeur" class="form-control" />
    </div>

    <div class="form-group col-md-5">
        <label for="dateDebut">Date de début</label>
        <p-calendar id="dateDebut" dateFormat="dd/mm/yy" styleClass="form-control" [showIcon]="true"></p-calendar>
    </div>

    <div class="form-group col-md-5">
        <label for="dateFin">Date de fin</label>
        <p-calendar id="dateFin" dateFormat="dd/mm/yy" styleClass="form-control" [showIcon]="true"></p-calendar>
    </div>
</div>

这是结果:

在此处输入图像描述

编辑

如果有任何帮助,这里是生成的 HTML:

<div class="form-group col-md-5" _ngcontent-scp-1="">
   <label for="dateDebut" _ngcontent-scp-1="">Date de début</label>
   <p-calendar ng-reflect-show-icon="true" ng-reflect-date-format="dd/mm/yy" ng-reflect-style-class="form-control" styleclass="form-control" id="dateDebut" dateformat="dd/mm/yy" _ngcontent-scp-1="">
      <!--template bindings={
         "ng-reflect-ng-if": "true"
         }-->
      <span ng-reflect-initial-classes="form-control" class="form-control ui-calendar" ng-reflect-raw-class="ui-calendar">
         <input id="dp1467976345328" ng-reflect-value="" class="hasDatepicker ui-inputtext ui-widget ui-state-default ui-corner-left" ng-reflect-raw-class="[object Object]" type="text"><!--template bindings={
            "ng-reflect-ng-if": "true"
            }--><button ng-reflect-icon="fa-calendar" type="button" pbutton="" class="ui-datepicker-trigger ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only"><span class="ui-button-icon-left ui-c fa fa-fw fa-calendar"></span><span class="ui-button-text ui-c">ui-button</span></button>
      </span>
      <!--template bindings={
         "ng-reflect-ng-if": "false"
         }-->
   </p-calendar>
</div>
4

7 回答 7

10

我使用了以下解决方法,这在 IE 和 Chrome 中都可以正常工作:

<p-calendar [inputStyle]="{'width':'55%'}" ...

试试看

于 2017-09-01T11:57:16.387 回答
6

PrimeNG的日历组件有四个样式属性,两个用于添加内联样式,两个用于添加样式 ( css) 类 - stylestyleClass和.inputStyleinputStyleClass

  • stylestyleClass用于设置组件本身的样式(日历)
  • inputStyleinputStyleClass用于设置输入字段的样式

因此,此行为不是错误,而是预期行为,因为您使用了错误的属性。如果您想将form-control类添加到PrimeNG的日历输入字段,您应该使用inputStyleClass而不是styleClass属性:

 <div class="form-group col-md-5">
    <label for="dateFin">Date de fin</label>
    <p-calendar id="dateFin" dateFormat="dd/mm/yy" inputStyleClass="form-control" [showIcon]="true"></p-calendar>
</div>

在此处查看PrimeNG日历组件的完整属性列表。

于 2016-11-03T23:50:39.007 回答
3

添加此 css 对我有用,可以将图标放置到位,并将表单控件添加到 inputStyleClass 属性。

.ui-calendar button {
    right: 0;
    top: 0;
}
.ui-calendar {
    width: 100%;
}

<p-calendar dateFormat="dd/mm/yy" showTime="showTime" hourFormat="24" formControlName="start" [showIcon]="true" inputStyleClass="form-control"></p-calendar>
于 2017-08-03T16:10:31.300 回答
3
  1. 使用“ inputStyleClass”属性设置css类

<p-calendar inputStyleClass="form-control"></p-calendar>

  1. 如果您不使用内联表单,则覆盖 " ui-calendar" css 类
.ui-calendar {
    display: block;
}
于 2017-06-16T20:29:51.150 回答
0

Primeng 11 / Bootstrap 4。

适应 CSS:

.p-calendar {
  width: 100%;
  height: 36px;
}

无需styleClass设置p-calendar

<div class="form-group col-md-5">
    <label for="dateFin">Date de fin</label>
    <p-calendar inputId="dateFin" dateFormat="dd/mm/yy" [showIcon]="true"></p-calendar>
</div>
于 2021-03-29T14:29:47.530 回答
0

嗨,伙计们,也许你可以试试这个。我将其用于我的代码

像这样添加styleClassinputStyleClass

<p-calendar styleClass="form-control" inputStyleClass="form-control" ></p-calendar>

并尝试更改一些CSS,对我来说是这样的:

.ui-inputtext{ margin:-7px -12px; }

.ui-button, button.ui-button.ui-state-default, .ui-button.ui-state-default{ top:0px; right: -1px; }

.ui-calendar button{ width: 2.5em; }

结果是 在此处输入图像描述

于 2017-01-06T08:26:35.913 回答
0

除了@Srefan Svrkota 的回答。您可以创建另一个覆盖表单控件类的内联样式的 css 类。

    .showCalenderInline
    {
    display: inline !important;
    }

and apply to calendar : inputStyleClass="form-control showCalenderInline"
于 2016-12-02T15:42:01.993 回答