如何重置控制值

如何重置控制值

问题描述:

我试图做一个控制,我们可以输入多个玩家的标记和他们的分数。如何重置控制值

但是当我们点击我的AddPlayer按钮时,我创建了一个播放器,然后我需要将窗体控件值重置为默认值。

我已经尝试了很多东西,但没有任何作品....它永远不会改变视图值。

下面是代码:

addPlayer(form: ControlGroup) { 
    var player = new Player(); 
    player.tag = form.value.tag; 
    player.name = form.value.name; 
    player.score = form.value.score; 

    // nothing work 
    form.value = null; 
    form.value.tag = null; 
    form.value.tag = ''; 

    this.playerService.addPlayer(player.tag, player.name, player.score); 
    this.newplayer.next(player); 
} 

下面是HTML

<form (submit)="addPlayer(playerForm)" [ng-form-model]="playerForm"> 
    <div class="form-group" [class.has-error]="!playerForm.find('tag').valid && playerForm.find('tag').touched"> 
     <div class="col-md-3 text-right"> 
      <label for="tag">Tag: </label> 
     </div> 

     <input type="text" id="tag" #tag="form" [ng-form-control]="playerForm.controls['tag']" placeholder="Tag"/> 

     <span *ng-if="tag.control.hasError('required') && !tag.control.pristine">Tag is required</span> 
    </div> 

    <div class="form-group" [class.has-error]="!playerForm.find('name').valid && playerForm.find('name').touched"> 
     <div class="col-md-3 text-right"> 
      <label for="name">Player Name: </label> 
     </div> 

     <input type="text" id="name" #name="form" [ng-form-control]="playerForm.controls['name']" placeholder="Player Name" /> 

     <span *ng-if="name.control.hasError('required') && !name.control.pristine">Player Name is required</span> 
    </div> 

    <div class="form-group" [class.has-error]="!playerForm.find('score').valid && playerForm.find('score').touched"> 
     <div class="col-md-3 text-right"> 
      <label for="score">Score: </label> 
     </div> 

     <input type="number" id="score" #score="form" [ng-form-control]="playerForm.controls['score']" value="0" min="0" max="200" /> 

     <span *ng-if="score.control.hasError('required') && !score.control.pristine">Score is required</span> 
    </div> 

    <button type="submit" class="btn btn-primary"> 
     Add Player 
    </button> 
</form> 

那么我怎样才能重新设置控件的值?

+0

尝试后['updateValue'](https://github.com/angular/angular/blob/2.0.0-alpha.40/modules/angular2/src/core/ forms/model.ts#L172) – alexpods

+0

哪个元素? – Vince

for(let c in form.controls) { 
    form.controls[c].updateValue(''); 
}; 
+1

为了避免删除,请解释你的答案。 –

+0

解答它自己的答案,IMO ... for循环调用每个窗体控件的updateValue为一个空字符串....对我来说似乎是非常有说服力的:) 但是,我可能会说应该有一个hasOwnProperty检查在for循环中。 – dudewad

根据角度2 docs它看起来像updateValue有一些params像只有self和emitEvent似乎处理验证重置。你尝试过吗?

+0

添加更多详情 –

重置窗体最简单的方法是重建窗体构建器。 点击添加球员按钮

this.playerForm = this.builder.group({ 
     'name': [...], 
     'tag': [...], 
     'score': [...] 
    }); 
+0

您也可以按照https://github.com/angular/angular/issues/4933 –