62
задан 13 August 2018 в 09:58

13 ответов

См. также https://angular.io/docs/ts/latest/guide/reactive-forms.html (раздел "сбросил флаги формы")

> =RC.6

В Дистанционном управлении 6, это должно поддерживаться для обновления модели формы. Создание новой группы формы и присвоение myForm

[formGroup]="myForm"

будут также поддерживаться ( https://github.com/angular/angular/pull/11051#issuecomment-243483654)

>, =RC.5

form.reset();

В новом модуле форм (> = Дистанционное управление 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);
  }
}

См. также

105
ответ дан 31 October 2019 в 13:25

С Angular2 RC5, myFormGroup.reset(), кажется, добивается цели.

25
ответ дан 31 October 2019 в 13:25

Для сброса формы после представления можно просто вызвать this.form.reset(). Путем вызова reset() это будет:

  1. Mark управление и дочерние элементы управления как [1 111] нетронутый .
  2. Mark управление и дочерние элементы управления как [1 112] нетронутый .
  3. Установленный значение управления и дочерних элементов управления к [1 113] пользовательское значение или пустой указатель .
  4. Обновление значение/законность/ошибки из затронутых сторон.

найдите этот запрос получения по запросу для подробного ответа. К вашему сведению этот PR был уже объединен с 2.0.0.

, Надо надеяться, это может быть полезно и сообщить мне, есть ли у Вас какие-либо другие вопросы в отношении Форм Angular2.

13
ответ дан 31 October 2019 в 13:25
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();
    }
}
8
ответ дан 31 October 2019 в 13:25

Позвоните clearForm(); в Вашей .ts Попытке файла

как ниже отрывка примера кода для очистки данных формы.

clearForm() {

this.addContactForm.reset({
      'first_name': '',
      'last_name': '',
      'mobile': '',
      'address': '',
      'city': '',
      'state': '',
      'country': '',
       'zip': ''
     });
}
7
ответ дан 31 October 2019 в 13:25

К угловой версии 4 можно использовать это:

this.heroForm.reset();

, Но, Вам могло быть нужно начальное значение как:

ngOnChanges() {
 this.heroForm.reset({
  name: this.hero.name, //Or '' to empty initial value. 
  address: this.hero.addresses[0] || new Address()
 });
}

важно разрешить пустую проблему в Вашей ссылке на объект.

ссылка ссылка , Поиск "сброса флаги формы".

6
ответ дан 31 October 2019 в 13:25

Существует новая дискуссия об этом ( https://github.com/angular/angular/issues/4933). До сих пор существует только некоторые взломы, который позволяет очищать форму, как воссоздание целой формы после представления: https://embed.plnkr.co/kMPjjJ1TWuYGVNlnQXrU /

3
ответ дан 31 October 2019 в 13:25

Я нашел другое решение. Это - немного hacky, но его широко доступное в angular2 мире.

С тех пор *ngIf директива удаляет форму и воссоздает его, можно просто добавить *ngIf к форме и связать ее со своего рода formSuccessfullySent переменная. => Это воссоздаст форму и поэтому сбросит состояния элемента управления вводом.

, Конечно, необходимо очистить образцовые переменные также. Я нашел удобным иметь определенный образцовый класс для моих полей формы. Таким образом, я могу сбросить все поля, столь же простые как создание нового экземпляра этого образцового класса. :)

1
ответ дан 31 October 2019 в 13:25

Вот то, как я делаю это в Угловом 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) ;
    });
}

не было никакой потребности звонить form.clearValidators()

1
ответ дан 31 October 2019 в 13:25

Гм, теперь (23 января 2017 с угловыми 2.4.3) я заставил его работать как это:

newHero() {
    return this.model = new Hero(42, 'APPLIED VALUE', '');
}
<button type="button" class="btn btn-default" (click)="heroForm.resetForm(newHero())">New Hero</button>
0
ответ дан 31 October 2019 в 13:25

Ниже кода работает на меня в Угловом 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()
 }

}
0
ответ дан 31 October 2019 в 13:25

Вот то, как я делаю это Угловые 8:

Получают локальную ссылку Вашей формы:

<form name="myForm" #myForm="ngForm"></form>
@ViewChild('myForm', {static: false}) myForm: NgForm;

И каждый раз, когда необходимо сбросить форму, звоните resetForm метод:

this.myForm.resetForm();
<час>

Вам будет нужно FormsModule от @angular/forms, чтобы он работал. Обязательно добавьте его к Вашему импорту модуля.

0
ответ дан 31 October 2019 в 13:25
resetForm(){
    ObjectName = {};
}
-2
ответ дан 31 October 2019 в 13:25