2017-04-06 55 views
0

我已經創建了我的問題筆:2輸入並排及其錯誤信息在它之下對齊

http://codepen.io/helloworld/pen/QpRxNr?editors=1100

我顯示2個輸入與在表列中的每個的錯誤消息。

設計太長我的口味是在一個表列內。

我希望2個輸入是並排的,每個錯誤消息直接對齊左側和其輸入對應。

就像在樣機我沒有當這兩個領域都沒有輸入值:

enter image description here

我怎麼能這樣做?

該解決方案應該考慮到兩個輸入必須佔據整個表格列的寬度。我不需要引導容器 - >行 - > 2列解決方案,因爲表格列左側不應有空白/填充。

我喜歡Flexbox的解決方案,也可以使用引導柔性公用事業:-)

<table> 
<td [formGroup]="customerForm" style="display:flex"> 

     <input class="form-control" placeholder="First name" type="text" formControlName="firstName" /> 
     <div *ngIf="customerForm.controls.firstName.touched"> 
      <div class="form-error" *ngIf="customerForm.controls.firstName.hasError('required')"> 
       first name is required. 
      </div> 
     </div> 

     <input class="form-control" placeholder="Last name" type="text" formControlName="lastName" /> 
     <div *ngIf="customerForm.controls.lastName.touched"> 
      <div class="form-error" *ngIf="customerForm.controls.lastName.hasError('required')"> 
       last name is required. 
      </div> 
     </div> 
    </td> 
</table> 

回答

0

這可以單獨與引導4 Flexbox的utils的完成,因此你不需要自定義CSS。

選項1:把2個輸入/差錯在自己的div,設置d-flextd ...

 <td class="d-flex"> 
      <div class="mr-3"> 
       <input class="form-control" placeholder="First name" type="text" formcontrolname="firstName"> 
       <div *ngif="customerForm.controls.firstName.touched"> 
        <div class="form-error" *ngif="customerForm.controls.firstName.hasError('required')"> 
         first name is required. 
        </div> 
       </div> 
      </div> 
      <div> 
       <input class="form-control" placeholder="Last name" type="text" formcontrolname="lastName"> 
       <div *ngif="customerForm.controls.lastName.touched"> 
        <div class="form-error" *ngif="customerForm.controls.lastName.hasError('required')"> 
         last name is required. 
        </div> 
       </div> 
      </div> 
     </td> 

選項2:離開HTML結構原樣,並使用utils的寬度和Flexbox的秩序......

 <td class="d-flex flex-wrap"> 
      <input class="form-control w-50 flex-first" placeholder="First name" type="text" formcontrolname="firstName"> 
      <div *ngif="customerForm.controls.firstName.touched" class="w-50"> 
       <div class="form-error" *ngif="customerForm.controls.firstName.hasError('required')"> 
        first name is required. 
       </div> 
      </div> 
      <input class="form-control w-50 flex-first" placeholder="Last name" type="text" formcontrolname="lastName"> 
      <div *ngif="customerForm.controls.lastName.touched" class="w-50 flex-last"> 
       <div class="form-error" *ngif="customerForm.controls.lastName.hasError('required')"> 
        last name is required. 
       </div> 
      </div> 
     </td> 

Here is the demo

+0

然後你來了...我最喜歡你的解決方案,因爲它是基於BS4的,我說的很好。我不喜歡你的解決方案之間的差距輸入之間缺失,但你的柔性箱代碼給了我的想法:我把一個額外的div與填充:每個輸入+ errordiv周圍5px和一個額外的justify-content-around到父td -標籤。每個輸入都有w-80。這樣,我有左邊和右邊輸入+錯誤消息之間的「邊距」:-)謝謝! – Pascal

+1

您可以在此查看:http://www.codeply.com/go/HEgWto9nta – Pascal