Поиск по сайту:

Реактивные формы в Angular: прослушивание изменений


Экземпляры реактивной формы, такие как FormGroup и FormControl, имеют метод valueChanges, который возвращает наблюдаемое значение, которое выдает последние значения. Поэтому вы можете подписаться на valueChanges для обновления переменных экземпляра или выполнения операций.

Взгляните на наше введение в Reactive Forms, если все это для вас ново.

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

Во-первых, давайте инициализируем нашу реактивную форму с помощью FormBuilder:

myForm: FormGroup;
formattedMessage: string;

constructor(private formBuilder: FormBuilder) {}

ngOnInit() {
  this.myForm = this.formBuilder.group({
    name: '',
    email: '',
    message: ''
  });

  this.onChanges();
}

Обратите внимание, как мы вызываем метод onChanges в хуке жизненного цикла ngOnInit после инициализации нашей формы. Вот содержимое нашего метода onChanges:

onChanges(): void {
  this.myForm.valueChanges.subscribe(val => {
    this.formattedMessage =
    `Hello,

    My name is ${val.name} and my email is ${val.email}.

    I would like to tell you that ${val.message}.`;
  });
}

Вы также можете прослушивать изменения в определенных элементах управления формы, а не во всей группе форм:

onChanges(): void {
  this.myForm.get('name').valueChanges.subscribe(val => {
    this.formattedMessage = `My name is ${val}.`;
  });
}

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