Как установить форму как первозданную?

  • Форма, представляющая состояние объекта, редактируется (становится грязной)
  • Форма отправляется, и состояние объекта теперь выровнено с состоянием формы, что означает, что форма теперь должна быть установлена ​​как нетронутая.

Как мы это делаем? В ng1 было $setPristine(). Кстати, я говорю о типе формы ControlGroup.

Ответ 2

Обновление

В модуле новых форм это значительно улучшилось.

AbstractControl, базовый класс большинства классов форм обеспечивает

markAsTouched({onlySelf}?: {onlySelf?: boolean}) : void
markAsUntouched({onlySelf}?: {onlySelf?: boolean}) : void
markAsDirty({onlySelf}?: {onlySelf?: boolean}) : void
markAsPristine({onlySelf}?: {onlySelf?: boolean}) : void
markAsPending({onlySelf}?: {onlySelf?: boolean}) : void

И еще несколько новых методов

disable({onlySelf, emitEvent}?: {onlySelf?: boolean, emitEvent?: boolean}) : void
enable({onlySelf, emitEvent}?: {onlySelf?: boolean, emitEvent?: boolean}) : void
setValue(value: any, options?: Object) : void
patchValue(value: any, options?: Object) : void
reset(value?: any, options?: Object) : void
updateValueAndValidity({onlySelf, emitEvent}?: {onlySelf?: boolean,  emitEvent?: boolean}) : void // (old)
setErrors(errors: {[key: string]: any}, {emitEvent}?: {emitEvent?: boolean}) : void

оригинальный

В настоящее время это не поддерживается. См. https://github.com/angular/angular/issues/5568 и https://github.com/angular/angular/issues/4933. Обычное обходное решение состоит в том, чтобы заново создать форму, чтобы получить первозданный.

Ответ 3

class MyComp {
   form = new FormGroup({
      first: new FormControl('Nancy'),
      last: new FormControl('Drew')
   });
}

   reset() {
      this.form.reset();  // will reset to null
     // this.form.reset({first: 'Nancy', last: 'Drew'});   -- will reset to value specified
   }

https://github.com/angular/angular/pull/9974

Это будет отображаться в rc5 или новее.