Angular 2에서 제출 한 후 양식을 지우는 방법은 무엇입니까?
템플릿이있는 간단한 각도 2 구성 요소가 있습니다. 제출 후 양식 및 모든 필드를 지우는 방법은 무엇입니까? 페이지를 새로 고침 할 수 없습니다. date.setValue('')
필드 와 함께 설정된 데이터 는 stil 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>
https://angular.io/docs/ts/latest/guide/reactive-forms.html ( "양식 플래그 재설정"섹션) 도 참조 하십시오.
> = RC.6
RC.6에서는 양식 모델 업데이트가 지원되어야합니다. 새 양식 그룹 생성 및 할당myForm
[formGroup]="myForm"
또한 지원됩니다 ( https://github.com/angular/angular/pull/11051#issuecomment-243483654 )
> = RC.5
form.reset();
새 양식 모듈 (> = RC.5) NgForm
에는 reset()
메소드가 있으며 양식 reset
이벤트 도 지원합니다 . https://github.com/angular/angular/blob/6fd5bc075d70879c487c0188f6cd5b148e72a4dd/modules/%40angular/forms/src/directives/ng_form.ts#L179
<= RC.3
이것은 작동합니다.
onSubmit(value:any):void {
//send some data to backend
for(var name in form.controls) {
(<Control>form.controls[name]).updateValue('');
/*(<FormControl>form.controls[name]).updateValue('');*/ this should work in RC4 if `Control` is not working, working same in my case
form.controls[name].setErrors(null);
}
}
또한보십시오
- https://github.com/angular/angular/issues/6196
- https://github.com/angular/angular/issues/6169
- https://github.com/angular/angular/issues/4933
- https://github.com/angular/angular/issues/4914
- https://github.com/angular/angular/issues/6371
Angular2 RC5 myFormGroup.reset()
에서 트릭을 수행하는 것 같습니다.
제출 후 양식을 재설정하려면을 호출하기 만하면 this.form.reset()
됩니다. reset()
그것을 호출 하면 :
- 컨트롤과 자식 컨트롤을 원래 대로 표시합니다 .
- 컨트롤 및 자식 컨트롤을 변경되지 않은 것으로 표시 합니다.
- 컨트롤 및 자식 컨트롤의 값 을 사용자 지정 값 또는 null로 설정 합니다.
- 영향을받는 당사자의 가치 / 유효성 / 오류 를 업데이트 합니다 .
자세한 답변을 보려면이 풀 리퀘스트 를 찾으십시오 . 참고로이 PR은 이미 2.0.0으로 병합되었습니다.
이 정보가 도움이되기를 바라며 Angular2 Forms와 관련하여 다른 질문이 있으면 알려주세요.
import {Component} from '@angular/core';
import {NgForm} from '@angular/forms';
@Component({
selector: 'example-app',
template: '<form #f="ngForm" (ngSubmit)="onSubmit(f)" novalidate>
<input name="first" ngModel required #first="ngModel">
<input name="last" ngModel>
<button>Submit</button>
</form>
<p>First name value: {{ first.value }}</p>
<p>First name valid: {{ first.valid }}</p>
<p>Form value: {{ f.value | json }}</p>
<p>Form valid: {{ f.valid }}</p>',
})
export class SimpleFormComp {
onSubmit(f: NgForm) {
// some stuff
f.resetForm();
}
}
Angular 버전 4에는 다음을 사용할 수 있습니다.
this.heroForm.reset();
그러나 다음과 같은 초기 값이 필요할 수 있습니다.
ngOnChanges() {
this.heroForm.reset({
name: this.hero.name, //Or '' to empty initial value.
address: this.hero.addresses[0] || new Address()
});
}
개체 참조에서 null 문제를 해결하는 것이 중요합니다.
참조 링크 , "양식 플래그 재설정"을 검색하십시오.
clearForm();
.ts 파일에서 전화 걸기
Try like below example code snippet to clear your form data.
clearForm() {
this.addContactForm.reset({
'first_name': '',
'last_name': '',
'mobile': '',
'address': '',
'city': '',
'state': '',
'country': '',
'zip': ''
});
}
There is a new discussion about this (https://github.com/angular/angular/issues/4933). So far there is only some hacks that allows to clear the form, like recreating the whole form after submitting: https://embed.plnkr.co/kMPjjJ1TWuYGVNlnQXrU/
I found another solution. It's a bit hacky but its widely available in angular2 world.
Since *ngIf directive removes the form and recreates it, one can simply add an *ngIf to the form and bind it to some sort of formSuccessfullySent
variable. => This will recreate the form and therefore reset the input control statuses.
Of course, you have to clear the model variables also. I found it convenient to have a specific model class for my form fields. This way i can reset all fields as simple as creating a new instance of this model class. :)
Hm, now (23 Jan 2017 with angular 2.4.3) I made it work like this:
newHero() {
return this.model = new Hero(42, 'APPLIED VALUE', '');
}
<button type="button" class="btn btn-default" (click)="heroForm.resetForm(newHero())">New Hero</button>
Here is how I do it in Angular 7.3
// you can put this method in a module and reuse it as needed
resetForm(form: FormGroup) {
form.reset();
Object.keys(form.controls).forEach(key => {
form.get(key).setErrors(null) ;
});
}
There was no need to call form.clearValidators()
Below code works for me in Angular 4
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
export class RegisterComponent implements OnInit {
registerForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.registerForm = this.formBuilder.group({
empname: [''],
empemail: ['']
});
}
onRegister(){
//sending data to server using http request
this.registerForm.reset()
}
}
Here's how I do it Angular 8:
Get a local reference of your form:
<form name="myForm" #myForm="ngForm"></form>
@ViewChild('myForm', {static: false}) myForm: NgForm;
And whenever you need to reset the form, call resetForm
method:
this.myForm.resetForm();
You will need FormsModule
from @angular/forms
for it to work. Be sure to add it to your module imports.
resetForm(){
ObjectName = {};
}
참고URL : https://stackoverflow.com/questions/34742023/how-to-clear-form-after-submit-in-angular-2
'Programing' 카테고리의 다른 글
C 쉘에서 stderr을 stdout으로 리디렉션 (0) | 2020.12.03 |
---|---|
Ajax 호출 후 Jquery 이벤트가 실행되지 않습니다. (0) | 2020.12.03 |
MYSQL 파티셔닝이란? (0) | 2020.12.03 |
toRad () 자바 스크립트 함수에서 오류 발생 (0) | 2020.12.03 |
Firebug에서 축소 된 JS를 어떻게 디버깅 할 수 있습니까? (0) | 2020.12.03 |