【问题标题】:Nested input-group in Angular componentAngular 组件中的嵌套输入组
【发布时间】:2020-02-17 06:55:31
【问题描述】:

我已经在 Angular 中创建了一个输入组件和一个 datepicker 组件。我的输入组件在类型参数的基础上创建文本的正确输入标签,数字 ecc。对于日期选择器,我创建了另一个托管 ngb-datepicker 的组件。 输入组件:

    <div class="input-group input-group-sm">
    <ng-container [ngSwitch]="type">
      <ng-container *ngSwitchCase="'date'">        
        <app-date-picker [id]="object.id" [name]="object.id" [disabled]="disabled" (focus)="focus()" (focusout)="focusout()" [(ngModel)]="value"></app-date-picker>
      </ng-container>
<div class="input-group-append" #ref>
  <span *ngIf="unit" class="input-group-text" [ngClass]="{
    'disabled': disabled, 
    'focused': focused}">{{unit}}</span>
  <span class="input-group-text" [ngClass]="{'focused': focused}" *ngIf="!disabled && !readonly && !isValidationOff">
    <app-quality-status #qualityStatus [objects]="[object]" [hide]="hideQualityStatus"></app-quality-status>
  </span>
</div>

<div class="input-group-append" #ref>
  <ng-content></ng-content>
</div>

日期选择器组件:

    <div class="input-group input-group-sm">
  <input class="form-control" name="dp" [(ngModel)]="selectedDate" ngbDatepicker #d="ngbDatepicker" (change)="onDateChange($event.target.value)" (dateSelect)="onDateSelect($event)" [disabled]="isDisabled ? 'disabled' : null">
  <div class="input-group-append">
    <button class="btn btn-input calendar fa fa-calendar" (click)="d.toggle()" type="button" [disabled]="isDisabled ? 'disabled' : null"></button>
  </div>
</div>

使用这个嵌套的输入组 div,结果是我有一个不使用整个空间而只使用一半空间的控件。如果我删除 datepicker 组件中的输入组,问题是我的按钮与文本框不对齐。

我该如何解决这种问题?

2019 年 10 月 23 日更新

这是我的 stackblitz 示例 https://stackblitz.com/edit/angular-pbabtg

【问题讨论】:

  • 如果您在 stackblitz 上共享 MVCE,则更容易提供帮助
  • @AkberIqbal 添加了一个 stackblitz 示例

标签: angular twitter-bootstrap bootstrap-4 angular-bootstrap


【解决方案1】:

尝试将以下css添加到hello.component

:host {
  display: flex;
  flex: auto;
}

【讨论】:

    【解决方案2】:

    &lt;hello&gt; 组件中添加了 2 个东西

    • class='form-control' 需要input-group-append
    • style='padding:0px' 因为这个填充将输入放在外面一点

    相关app.component.html

    <p>
        Sample for boostrap nested input-group
    </p>
    <div class="row form-group form-group-sm">
        <div class="col-md-12">
            simple input box - works !
        <div class="input-group input-group-sm">  
                <input type="number" class="form-control" placeholder="">
                <div class="input-group-append" #ref>
                    <span class="input-group-text" >Unit</span>
                    <span class="input-group-text">
              <span class="help">
                Help
              </span>
                    </span>
                </div>
                <div class="input-group-append" #ref>
                    <ng-content></ng-content>
                </div>
            </div>
        </div>
    
        <div class="col-md-12">
        Only my custom component - works !
            <hello name="{{ name }}"></hello>
        </div>
    
        <div class="col-md-12">
        My custom component in a input-group - fails !
    <div class="input-group input-group-sm">
                <hello name="{{ name }}" class='form-control' style='padding:0px' ></hello>
                <div class="input-group-append" #ref>
                    <span class="input-group-text" >Unit</span>
                    <span class="input-group-text">
              <span class="help">
                Help
              </span>
                    </span>
                </div>
                <div class="input-group-append" #ref>
                    <ng-content></ng-content>
                </div>
            </div>
        </div>
    </div>
    

    完成working stackblitz here

    【讨论】:

    • 这种情况下还需要设置border: 0;,否则组件会错位
    猜你喜欢
    • 2017-12-31
    • 2016-07-12
    • 2016-11-02
    • 2018-07-28
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多