Элемент ввода в стиле, когда он нетронутый в Angular

#css #angular

#css #angular

Вопрос:

Привет, у меня есть этот класс css, который выдает красную рамку, когда поле ввода является обязательным, а поле ввода недопустимо. Он меняется на зеленый, когда поле ввода становится действительным.

CSS

 .ng-valid[required], .ng-valid.required  {
  border-left: 5px solid #42A948; /* green */
}

.ng-invalid:not(form)  {
  border-left: 5px solid #a94442; /* red */
}
  

HTML

 <input
              type="text"
              class="form-control"
              placeholder="Vehicle Code"
              [formControl]="codeControl"
              required
            />
  

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

Ответ №1:

Вы можете использовать ngStyle или ngClass.

Для этого примера я использовал ngClass (мой предпочтительный метод).

Component.css:

 .valid {
  border-left: 5px solid #42A948;
}

.required {
  border-left: 5px solid #a94442;
}
  

Component.html

 <form [formGroup]="form">
  <input 
    type="text" 
    [formControl]="name" 
    [ngClass]="{'required': name.invalid amp;amp; (name.dirty || name.touched), 'valid': name.valid amp;amp; (name.dirty || name.touched)}"
  >
</form>
  

Component.ts

 export class AppComponent  {
  constructor() { }

  form = new FormGroup({
    name: new FormControl('', Validators.required)
  });

  get name(): AbstractControl {
    return this.form.get('name')
  } 
}
  

Я также поместил здесь Stackblitz для вашей справки, ниже:

https://stackblitz.com/edit/angular-5xsg7r

Счастливого кодирования 🙂