【问题标题】:PrimeNG calendar bug when applying css class from bootstrap从引导程序应用 css 类时的 PrimeNG 日历错误
【发布时间】:2016-11-10 22:39:20
【问题描述】:

我有一个奇怪的错误,我使用 PrimeNG 在我的应用程序中显示 DatePicker。当我尝试使用 bootstrap 的 form-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>

【问题讨论】:

  • 可能 Bootstrap 的 form-control 的视图样式与 PrimeNG 的输入/表单布局冲突?
  • 我添加了生成的html
  • 这和我在 PrimeNG 论坛forum.primefaces.org/…987654322@报告的问题完全相同
  • 谢谢@AJQarshi,也许会得到解决(即使他们在论坛上看起来不是很活跃......)
  • @AJQarshi 不知道你是否还有这个问题,只是想让你知道我提供了解决方案。

标签: css angular twitter-bootstrap primeng primeng-calendar


【解决方案1】:

Primeng 11 / Bootstrap 4.

适应 CSS:

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

无需在p-calendar上设置styleClass

<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>

【讨论】:

    【解决方案2】:

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

        .showCalenderInline
        {
        display: inline !important;
        }
    
    and apply to calendar : inputStyleClass="form-control showCalenderInline"
    

    【讨论】:

      【解决方案3】:

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

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

      试试看

      【讨论】:

      • 为我工作。谢谢!
      【解决方案4】:

      添加这个 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>
      

      【讨论】:

        【解决方案5】:
        1. 使用“inputStyleClass”属性设置css类

        &lt;p-calendar inputStyleClass="form-control"&gt;&lt;/p-calendar&gt;

        1. 如果您不使用内联表单,则覆盖“ui-calendar”css 类
        .ui-calendar {
            display: block;
        }
        

        【讨论】:

          【解决方案6】:

          大家好,也许你可以试试这个。 我将其用于我的代码

          像这样添加 styleClassinputStyleClass

          &lt;p-calendar styleClass="form-control" inputStyleClass="form-control" &gt;&lt;/p-calendar&gt;

          并尝试更改一些 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; }

          结果是

          【讨论】:

            【解决方案7】:

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

            • 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 的日历组件here 的整个属性列表。

            【讨论】:

            • 嗨斯蒂芬。谢谢你的回答。我试过但不幸的是它仍然显示一个错误,就像你可以在这里看到的那样:i.imgur.com/rkjyel0.png我使用的代码是&lt;div class="form-group"&gt;&lt;p-calendar id="dateDebut" dateFormat="dd/mm/yy" inputStyleClass="form-control" [showIcon]="true"&gt;&lt;/p-calendar&gt;&lt;/div&gt;
            • @Shimrod 我明白了,但这完全是由[showIcon]="true" 引起的另一个问题。考虑使用placeholder 或其他东西来代替它。
            猜你喜欢
            • 1970-01-01
            • 2018-09-02
            • 2016-11-09
            • 1970-01-01
            • 2016-04-21
            • 1970-01-01
            • 2018-12-16
            • 1970-01-01
            • 2016-11-20
            相关资源
            最近更新 更多