代码之家  ›  专栏  ›  技术社区  ›  Ibanez1408

引导验证在角度框架中不起作用

  •  0
  • Ibanez1408  · 技术社区  · 7 年前

    我需要让输入框的颜色根据其状态改变颜色,有效或无效。我正在学习一个教程,在他的教程中它可以改变。我复制并粘贴了他的代码,这样我可以很确定我没有遗漏任何东西,但我还是不能让它工作。请看下面的代码:

    样式.css

    input.ng-touched.ng-invalid{
      border-color: #dc3545;
    }
    
    input.ng-valid{
      border-color: #28a745;
    }
    

    <form #form="ngForm" autocomplete="off">
        <input type="hidden" name="PMId" [value]="service.formData.PMId">
        <div class="form-group">
          <div class="input-group">
            <div class="input-group-prepend">
              <div class="input-group-text bg-white">
                <i class="fas fa-user-circle" [class.green-icon]="CardOwnerName.valid" [class.red-icon]="CardOwnerName.invalid && CardOwnerName.touched"></i>
              </div>
            </div>
            <input name="CardOwnerName" #CardOwnerName="ngModel" [(ngModel)]="service.formData.CardOwnerName" class="form-control"
              placeholder="Card Owner Name" required>
          </div>
        </div>
        <div class="form-group">
          <div class="input-group">
            <div class="input-group-prepend">
              <div class="input-group-text bg-white">
                <i class="far fa-credit-card"  [class.green-icon]="CardNumber.valid" [class.red-icon]="CardNumber.invalid && CardNumber.touched"></i>
              </div>
            </div>
            <input name="CardNumber" #CardNumber="ngModel" [(ngModel)]="service.formData.CardNumber"
            class="form-control" placeholder="16 Digit Card Number" required maxlength="16" minlength="16">
          </div>
        </div>
        <div class="form-row">
          <div class="form-group col-md-7">
            <div class="input-group">
              <div class="input-group-prepend">
                <div class="input-group-text bg-white">
                  <i class="fas fa-calendar-alt"  [class.green-icon]="ExpirationDate.valid" [class.red-icon]="ExpirationDate.invalid && ExpirationDate.touched"></i>
                </div>
              </div>
              <input name="ExpirationDate" #ExpirationDate="ngModel" [(ngModel)]="service.formData.ExpirationDate" class="form-control"
                placeholder="MM/YY" required maxlength="5" minlength="5">
            </div>
          </div>
          <div class="form-group col-md-5">
            <div class="input-group">
              <div class="input-group-prepend">
                <div class="input-group-text bg-white">
                  <i class="fas fa-key"  [class.green-icon]="CVV.valid" [class.red-icon]="CVV.invalid && CVV.touched"></i>
                </div>
              </div>
              <input type="password" name="CVV" #CVV="ngModel" [(ngModel)]="service.formData.CVV" class="form-control" placeholder="CVV"
              required  maxlength="3" minlength="3">
            </div>
          </div>
        </div>
        <div class="form-group">
          <button class="btn btn-success btn-lg btn-block" type="submit" [disabled]="form.invalid"><i class="fas fa-database"></i> Submit</button>
        </div>
      </form>
    

    当我使用检查员时,我应该看到iput框的不同状态,如“原始”、“触摸”、“脏”等,但我没有看到。 你能告诉我怎么向右走吗?谢谢您。

    0 回复  |  直到 7 年前
        1
  •  3
  •   Ibanez1408    7 年前

    对于那些感兴趣的人,代码是正确的。我的问题是ngModels没有定义所以我需要在我的组件.ts文件:

    formData: PaymentDetail = {
        CVV: null,
        CardNumber: null,
        CardOwnerName: null,
        ExpirationDate: null,
        PMId: null
      }
    
        2
  •  0
  •   RalfFriedl    7 年前

    问题出在 payment-details.service.ts
    添加如下表单数据:

    export class PaymentDetailService {
      formData: PaymentDetail = {
        CVV: null,
        CardNumber: null,
        CardOwnerName: null,
        ExpirationDate: null,
        PMId: null
      }
    
    推荐文章