На моем сайте есть форма (person.firstName, lastName, DOB, Gender, Citizenship и т. д.). Мой вопрос в том, как я могу наблюдать за изменениями всей формы и получить из этого наблюдения 2 вещи:
текущее значение для обработанного formControl
Приставка {{availablePrefix}}
<div class = "col">
<label for = "firstName">First Name<span style = "color: red"> *</span> </label>
<input formControlName = "party.firstName" type = "text" autocomplete = "off" id = "firstName"/>
</div>
<div class = "col">
<label for = "middleName">Middle Name</label>
<input formControlName = "party.middleName" type = "text" autocomplete = "off" id = "middleName" maxlength = "1" />
</div>
<div class = "col">
<label for = "lastName">Last Name<span style = "color: red"> *</span> </label>
<input formControlName = "party.lastName" type = "text" autocomplete = "off" id = "lastName"/>
</div>
<div class = "col">
<label for = "suffix">Suffix</label>
<select formControlName = "party.suffix" id = "suffix">
<option [value] = "availableSuffix" *ngFor = "let availableSuffix of availableSuffixes">{{availableSuffix}}
</option>
</select>
</div>
</div>
</form>
Спасибо за любую помощь
Я имею в виду "грязный" или "чистый", "действительный" или "недействительный"





Как только ваша форма будет создана (через FormBuilder), просто напишите, что:
this.fmdForm.valueChanges.subscribe(formValue => { console.info(formValue); });
Спасибо, но как мне получить formControl для этого измененного значения?
formValue содержит все элементы управления вашей формы. Доступ к ним с formValue.party.suffix.
По статусу старый способ: this.fmdForm.get('party.suffix').valid
Я попробовал твой ответ. formValue содержит только значения без состояния formControl
Состояние не привязано к изменениям, состояние привязано к форме. Я сделал комментарий непосредственно перед вашим, чтобы рассказать вам, как получить состояние.
Наблюдаемые valueChanges всегда будут подталкивать новое значение формы.
Чтобы отслеживать состояние формы, для этого есть несколько свойств:
status Статус проверки элемента управления. Существует четыре возможных значения статуса проверки (VALID , INVALID , PENDING, DISABLED).
есть еще одна наблюдаемая для отслеживания изменения статуса statusChanges
другие логические свойства только для чтения для отслеживания состояния формы:
(valid , invalid , pending , disabled , enabled , pristine , dirty , touched , untouched)
вы можете отследить старое состояние валу с помощью этого трюка
public form:FormGroup;
oldValue:any;
constructor (fb:FormBuilder) {
this.form = fb.group({
name:[],
lastName:[]
});
this.form.valueChanges.subscribe(newValue => {
console.info('old value',this.oldValue);
this.oldValue = newValue;
console.info('new form value',newValue);
console.info('state ', this.form.status);
console.info('pristine ',this.form.pristine);
console.info('dirty ',this.form.dirty);
console.info('touched ',this.form.touched);
});
}
что ты имеешь в виду ? formControl с текущим статусом