this.form.setValue({
user:{
pass:'123456',
email: 'anchikin@mail.ru'
},
country: 'ru',
answer: 'yes'
});
Если ''setValue()'' передать "неполную" модель - будет сгенерирована ошибка.
====patchValue====
''patchValue()'' может принимать лишь часть этой структуры, все "лишние" свойства будут проигнорированы.
this.form.form.patchValue({
user: {email : 'anchikin@mail.ru'}
})
Вторым параметром оба метода принимают объект, с помощью которого, например, можно сделать так, чтобы установка значения рективной формы Angular не инициировала событие valueChanges.
this.form.form.patchValue(
{ user: {email : 'anchikin@mail.ru'} },
{emitEvent: false}
)
----
====Полный пример====
import {Component, ViewChild} from '@angular/core';
import {NgForm} from "@angular/forms";
@Component({
selector: 'app-root',
template: `
Форма была отправлена
{{formData|json}}
`
})
export class AppComponent {
@ViewChild('myForm') form: any;
answers = [{
type: 'yes',
text: 'Да'
}, {
type: 'no',
text: 'Нет'
}];
defaultAnswer = 'no';
defaultCountry = 'ru';
formData = {};
isSubmited = false;
submitForm(){
this.isSubmited = true;
this.formData = this.form.value;
this.form.reset();
console.log('submit', this.form);
}
autoComplete(){
this.form.setValue({
user:{
pass:'123456',
email: 'anchikin@mail.ru'
},
country: 'ru',
answer: 'yes'
});
}
addRandEmail(){
const randEmail = 'anchikin@mail.ru';
this.form.form.patchValue({
user: {email : randEmail}
})
}
}