Проверка начальной загрузки не работает в Angular Framework - PullRequest
0 голосов
/ 14 марта 2019

Мне нужно, чтобы цвет полей ввода менял цвет в соответствии с его состоянием, действительным или недействительным.Я следую учебному пособию, и в его учебнике оно может измениться.Я скопировал и вставил его коды, чтобы быть уверенным, что ничего не пропустил, но все равно не могу заставить его работать.Пожалуйста, смотрите мой код ниже:

styles.css

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

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

payment-detail-component.ts

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

Когда я пользуюсь инспектором, я должен видеть различное состояние ящиков ввода, таких как «нетронутый», «касался», «грязный» и т. Д. Но я этого не вижу.Можете ли вы показать мне, как это правильно?Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Для тех, кому интересно, коды верны. Моя проблема заключалась в том, что ngModels не были определены, поэтому мне нужно было сделать это в моем файле component.ts:

formData: PaymentDetail = {
    CVV: null,
    CardNumber: null,
    CardOwnerName: null,
    ExpirationDate: null,
    PMId: null
  }
0 голосов
/ 18 июня 2019

проблема была в payment-details.service.ts
Добавьте формуДанные так:

export class PaymentDetailService {
  formData: PaymentDetail = {
    CVV: null,
    CardNumber: null,
    CardOwnerName: null,
    ExpirationDate: null,
    PMId: null
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...