Я бы изменил значение моего ввода во время тестирования, поэтому я сделал:
const de = fixture.debugElement.query(By.css('[formControlName="username"]'));
de.nativeElement.value = "10";
Затем я отправлю форму:
component.onSubmit();
И значение ввода все равно остается неизменным. Я попытался добавить
fixture.detectChanges();
После отправки формы, но она на самом деле ничего не делает.
Почему вы получаете элемент с помощью селектора CSS? Угловой способ создания реактивных форм, которые намного проще, чем то, что вы пытаетесь сделать. Возьмем следующий пример:
export class ReactiveFormExampleComponent implements OnInit {
public form: FormGroup;
constructor () { }
ngOnInit(): void {
this.form = new FormGroup({
'username': FormControl(null, [/** Any form validators here **/])
});
}
onSubmit(): void {
// get the value of the username
const username = this.form.get('username').value;
}
}
Если вы действительно хотели посмотреть значение и обнаружить изменения, не нажимая кнопку с прикрепленным событием щелчка, вы сделаете это после инициализации формы.
this.form.get('username').valueChanges.subscribe(val => {
// new username value is 'val'
});