#javascript #angular
#javascript #angular
Вопрос:
Я хочу запустить отправку вне формы, и я использую submitted
свойство ngForm
для своей логики приложения.
Но когда я отправляю форму, она запускает onSubmit
функцию, но submitted
остается false
.
Почему? и как заставить это работать?
import { Component, VERSION, ViewChild } from "@angular/core";
import { FormControl, FormGroup, NgForm } from "@angular/forms";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
@ViewChild("ngForm") form: NgForm;
profileForm = new FormGroup({
firstName: new FormControl(""),
lastName: new FormControl("")
});
name = "Angular " VERSION.major;
submitForm() {
this.form.ngSubmit.emit();
}
onSubmit() {
console.log("submittedd!!!");
}
}
HTML:
<hello name="{{ name }}"></hello>
<p>
Start editing to see some magic happen :)
</p>
{{ngForm.submitted | json }}
<form #ngForm="ngForm" [formGroup]="profileForm" (ngSubmit)="onSubmit()">
<label>
First Name:
<input type="text" formControlName="firstName">
</label>
<label>
Last Name:
<input type="text" formControlName="lastName">
</label>
</form>
<button type="button" (click)="submitForm()">trigger submit outside</button>
Комментарии:
1. Насколько я знаю, отправка в ngSubmit фактически не отправляет форму. Я предлагаю переместить кнопку внутри формы, удалить привязку события щелчка и изменить тип на submit . Тогда вам не понадобится функция submitForm .
2. @testpossessed Это тоже верно.
Ответ №1:
Вы не так далеко. Потребуется несколько изменений:
Добавить id="ngForm"
для тега формы:
<form id="ngForm" #ngForm="ngForm" [formGroup]="profileForm" (ngSubmit)="onSubmit()">
Замените тип кнопки на submit
и добавьте дополнительный атрибут form
значением, которое было присвоено идентификатору формы. В этом случае это было бы ngForm
:
<button type="submit" form="ngForm">trigger submit outside</button>
Кроме того, вам больше не нужен submitForm
метод.
Теперь он установит форму как отправленную.