2016-07-08 37 views
5

Ho questo strano bug in cui uso PrimeNG per visualizzare un DatePicker nella mia applicazione. Quando provo a usare il bootstrap form-control, ottengo un bug visivo.Errore di calendario PrimeNG durante l'applicazione della classe css da bootstrap

Ecco il mio modello:

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

Questo è il risultato:

enter image description here

EDIT: Se è di alcun aiuto, ecco il codice HTML generato:

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

Forse 'forma-control' di Bootstrap è uno stili vista collisione con Layout di input/form di PrimeNG? – rinukkusu

+0

Ho aggiunto l'html generato – Shimrod

+0

È esattamente lo stesso problema che ho segnalato sul forum PrimeNG http://forum.primefaces.org/viewtopic.php?f=35&t=46579&sid=13c74fc76b0678d9a2440f35866d011c –

risposta

4
Il componente del calendario

PrimeNG ha quattro attributi di stile s, due per aggiungere stili in linea e due per aggiungere stili (css) classi - style, styleClass, inputStyle e inputStyleClass.

  • style e styleClass sono utilizzati per lo stile componente stesso (calendario)
  • inputStyle e inputStyleClass sono utilizzati per campo di input stile

Quindi, questo comportamento è non un bug, ci si aspetta comportamento perché stai utilizzando un attributo errato. Se si desidera aggiungere form-control classe per PrimeNG 'campo di inserimento del calendario s, si dovrebbe usare inputStyleClass invece di attributo 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> 

Controllare tutta la lista di attributi per PrimeNG' componente s calendario here.

+0

Ciao Stephan. Grazie per il vostro anser. Ho provato ma sfortunatamente mostra ancora un bug, come potete vedere qui: http://i.imgur.com/rkjyel0.png Il codice che ho usato è '

' – Shimrod

+0

@Shimrod vedo, ma questo è tutto un altro problema causato da '[ShowIcon] = "true"'. Prendi in considerazione l'uso di "segnaposto" o qualcosa al posto di esso. –

0

Aggiunta alla risposta di @Srefan Svrkota. È possibile creare un'altra classe css che sovrascriva lo stile inline della classe di controllo della forma. .showCalenderInline { display: inline! Important; }

e valgono per il calendario: inputStyleClass = "form-controllo showCalenderInline"

-1

Ciao ragazzi forse si può provare questo. im usando questo per il mio codice

aggiungere styleClass e inputStyleClass come questo:

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

e cercare di cambiare un po 'di CSS, per me in questo modo:

.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; }

e il risultato è enter image description here

0
  1. uso "inputStyleClass" proprietà per impostare la classe CSS

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

  1. Se non si utilizza modulo in linea, quindi ignorare il "ui-calendar" classe CSS
.ui-calendar { 
    display: block; 
} 
0

L'aggiunta di questo css ha lavorato per me per ottenere l'icona in posizione e per aggiungere il controllo di forma all'attributo 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> 
3

ho usato la soluzione qui di seguito, e questo sta lavorando bene sia in IE & Chrome:

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

Prova ora

+0

Lavoro per me. Grazie! – ivanbtrujillo

Problemi correlati