Не удается получить доступ к изменениям родительского объекта formControl в отношении Parent-Child Component в Angular 8

Я создал родительский компонент следующим образом:

<form [formGroup] = "cardForm">
<app-inputvalidator [controls] = "cardForm.get('name')"></app-inputvalidator>  
</form>

Родительский файл TS

import { Component, OnInit } from '@angular/core'
import { FormGroup, FormControl,Validators } from '@angular/forms'

@Component({
  selector: 'app-card-form',
  templateUrl: './card-form.component.html',
  styleUrls: ['./card-form.component.css']
})

export class CardFormComponent implements OnInit {
  nameFormControl ;

   cardForm =  new FormGroup({
    name: new FormControl('', [Validators.minLength(5),Validators.maxLength(25)])
  });



  constructor() {
   }

 ngOnInit(): void {
     this.nameFormControl = this.cardForm.get('name');
            }

}

Я передаю nameFormControls дочернему компоненту и обращаюсь к нему в шаблоне, а также в классе следующим образом:

InputValidator.ts

 import { Component, OnInit, Input } from '@angular/core'
 import { FormControl} from '@angular/forms'

 @Component({
  selector: 'app-inputvalidator',
  templateUrl: './inputvalidator.component.html',
  styleUrls: ['./inputvalidator.component.css']
})
 export class InputvalidatorComponent implements OnInit {
 @Input() controls: FormControl;

 constructor() {

 }

 ngOnInit(): void {
 }

}

Входной Validator.html

  <input [formControlName] = "controls"  
  <br>
  <div>{{ controls.errors | json}}</div> 

Проект успешно скомпилирован без ошибок.

Я получаю значение элемента управления. Ошибки всегда равны нулю. Почему я не могу распечатать объект controls.errors с использованием интерполяции строк при изменении значения в поле ввода имени?

Всего 1 ответ


вы получаете ноль, потому что вы не ставите обязательный валидатор в мин, валидаторы maxLength вернут ошибку, если есть значение и значение недопустимо, если значение ноль или пустая строка, это будет считаться действительным

проверьте валидатор valid источник


Есть идеи?

10000