如何将表单设置为原始?

时间:2016-05-13 11:51:35

标签: angular angular2-forms

  • 正在编辑表示实体状态的表单(变脏)
  • 表单正在提交,实体状态现在与表单状态对齐,这意味着表单现在应该设置为原始状态。

我们如何做到这一点? ng1中有$setPristine()。 顺便说一句,我说的是ControlGroup种形式。

3 个答案:

答案 0 :(得分:29)

map<string, shared_ptr<set<size_t>>> word_line; //some performances to deal with word_line, everything goes normally string word; cin >> word; map<string, shared_ptr<set<size_t>>>::iterator find_word = word_line.find(word); //the programm crashes when the following codes execute int line_size = (*(find_word->second)).size(); 方法(现在似乎没有记录,但可以在这里找到:https://github.com/angular/angular/blob/53f0c2206df6a5f8ee03d611a7563ca1a78cc82d/tools/public_api_guard/forms/index.d.ts#L42)。

基本上,markAsPristine符合您的期望。

答案 1 :(得分:11)

<强>更新

在新表单模块中,这已经有了很大改进。

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/5568https://github.com/angular/angular/issues/4933。通常的解决方法是重新创建表单以获得原始表单。

答案 2 :(得分:0)

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或更高版本中。