У меня есть простой угловой компонент 2 с шаблоном. Как очистить форму и все поля после отправки ?. Не могу перезагрузить страницу. После установки данные с date.setValue('')
полем по-прежнему touched
.
import {Component} from 'angular2/core';
import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators, Control} from 'angular2/common';
@Component({
selector: 'loading-form',
templateUrl: 'app/loadings/loading-form.component.html',
directives: [FORM_DIRECTIVES]
})
export class LoadingFormComponent {
private form:ControlGroup;
private date:Control;
private capacity:Control;
constructor(private _loadingsService:LoadingsService, fb:FormBuilder) {
this.date = new Control('', Validators.required);
this.capacity = new Control('', Validators.required);
this.form = fb.group({
'date': this.date,
'capacity': this.capacity
});
}
onSubmit(value:any):void {
//send some data to backend
}
}
loading-form.component.html
<div class="card card-block">
<h3 class="card-title">Loading form</h3>
<form (ngSubmit)="onSubmit(form.value)" [ngFormModel]="form">
<fieldset class="form-group" [class.has-danger]="!date.valid && date.touched">
<label class="form-control-label" for="dateInput">Date</label>
<input type="text" class="form-control form-control-danger form-control-success" id="dateInput"
min="0" placeholder="Enter loading date"
[ngFormControl]="form.controls['date']">
</fieldset>
<fieldset class="form-group" [class.has-danger]="!capacity.valid && capacity.touched">
<label class="form-control-label" for="capacityInput">Capacity</label>
<input type="number" class="form-control form-control-danger form-control-success" id="capacityInput"
placeholder="Enter capacity"
[ngFormControl]="form.controls['capacity']">
</fieldset>
<button type="submit" class="btn btn-primary" [disabled]="!form.valid">Submit
</button>
</form>
</div>
источник
pristine
, ..., то восстановление формы в настоящее время является единственным вариантом.setValue()
методе контроля. ТолькоupdateValue()
github.com/angular/angular/blob/master/modules/angular2/src/…Что касается Angular2 RC5,
myFormGroup.reset()
похоже, это помогает .источник
Чтобы сбросить форму после отправки, вы можете просто вызвать
this.form.reset()
. Вызываяreset()
его, вы:Пожалуйста, найдите этот запрос на перенос, чтобы получить подробный ответ. К вашему сведению, этот PR уже был объединен с 2.0.0.
Надеюсь, это может быть полезно, и дайте мне знать, если у вас возникнут другие вопросы относительно Angular2 Forms.
источник
Сделать звонок
clearForm();
в вашем .ts файлеПопробуйте, как показано ниже, фрагмент кода, чтобы очистить данные формы.
источник
источник
Вот как я это делаю в Angular 7.3
Звонить не было необходимости
form.clearValidators()
источник
Вот как я это делаю в Angular 8:
Получите местную ссылку на вашу форму:
<form name="myForm" #myForm="ngForm"></form>
@ViewChild('myForm', {static: false}) myForm: NgForm;
И всякий раз, когда вам нужно сбросить форму, вызовите
resetForm
метод:this.myForm.resetForm();
Вам понадобится
FormsModule
from,@angular/forms
чтобы он работал. Обязательно добавьте его в свой импорт модуля.источник
@ViewChild
в Angular 8 требуется 2 аргумента.@ViewChild('myForm', {static: false}) myForm: NgForm;
Для угловой версии 4 вы можете использовать это:
Но вам может понадобиться начальное значение, например:
Важно решить проблему с нулевым значением в вашей объектной ссылке.
ссылки на ссылку , Поиск «сброс формы флагов».
источник
По этому поводу ведется новое обсуждение ( https://github.com/angular/angular/issues/4933 ). Пока есть только несколько хаков, которые позволяют очистить форму, например, воссоздать всю форму после отправки: https://embed.plnkr.co/kMPjjJ1TWuYGVNlnQXrU/
источник
Нашел другое решение. Это немного взломано, но широко доступно в мире angular2.
Поскольку директива * ngIf удаляет форму и воссоздает ее, можно просто добавить * ngIf в форму и привязать его к какой-то
formSuccessfullySent
переменной. => Это воссоздает форму и, следовательно, сбросит статусы управления вводом.Конечно, вы также должны очистить переменные модели. Мне было удобно иметь определенный класс модели для полей формы. Таким образом, я могу сбросить все поля так же просто, как создать новый экземпляр этого класса модели. :)
источник
querySelectorAll
inngAfterViewInit
. Я использую этот список, чтобы сфокусировать следующий элемент ввода на keydown.enter вместо отправки формы. Этот список прерывается при использовании ngIf для повторной инициализации формы. :(Хм, теперь (23 января 2017 года с angular 2.4.3) я заставил его работать так:
источник
Код ниже работает для меня в Angular 4
источник
this.myForm.reset ();
Этого достаточно ... Вы можете получить желаемый результат
источник
Чтобы сбросить полную форму при отправке, вы можете использовать reset () в Angular. Пример ниже реализован в Angular 8. Ниже представлена форма подписки, в которой мы принимаем электронную почту в качестве входных данных.
Обратитесь к официальному документу: https://angular.io/guide/forms#show-and-hide-validation-error-messages .
источник
источник
object
пустым, а неform
.