Angular2被动表单.reset()未清除自定义组件

Angular2被动表单.reset()未清除自定义组件,angular,angular2-forms,Angular,Angular2 Forms,在Angular2RC5我的应用程序中,我有一个SSN输入,其任务是在用户在其SSN中键入时添加破折号(ex 123-34-3434)。我使用它作为“反应表单”(不是模板表单的表单…)的一部分。我的模板如下所示: <form class="form-horizontal" [formGroup]="form" (ngSubmit)="submit()"> <div class="thumbnail"> <p class="lead">Please

在Angular2RC5我的应用程序中,我有一个SSN输入,其任务是在用户在其SSN中键入时添加破折号(ex 123-34-3434)。我使用它作为“反应表单”(不是模板表单的表单…)的一部分。我的模板如下所示:

<form class="form-horizontal" [formGroup]="form" (ngSubmit)="submit()">
  <div class="thumbnail">
    <p class="lead">Please enter your <span *ngIf="context==='fr-secondary'">Spouse's </span> Last Name, SSN, Tax Year, and Quarter</p>
    //other inputs
    <div class="form-group">
      <label class="col-sm-2" for="inputSSN">SSN</label>
      <div class="col-sm-4">
        <ssn-input formControlName="ssn"></ssn-input>
        <!--<span class="help-block error" *ngIf="form.controls['ssn'].errors && form.controls['ssn'].errors['required']">required</span>
        <span class="help-block error" *ngIf="form.controls['ssn'].errors && form.controls['ssn'].errors['patternError']">Invalid SSN</span>-->
      </div>
    </div>
  </div>
  <button type="submit" class="btn btn-primary pull-right">Next</button>
</form>

编辑:

如果使用
writeValue
更新输入,则需要将该值分配给该输入

此代码

  writeValue(value) {
    if (value) {
      this.value = value;
    }
  }
如果值为
null
,并且需要将输入绑定到
this.value
,则此操作会显式跳过写入操作,以便对其进行更新


虽然这不是问题所在,但捕捉得很好。这里有一个提示:我删除了
if语句,但它仍然不起作用。我认为问题可能是
form.reset()
对自定义值访问器不起作用?您是否尝试从
writValue()
中删除
if(value)
?是的,这就是我要说的,我的答案中的Plunker与angular2 gitter中的一些讨论后解释的类似,我们决定,除非我们遗漏了什么,否则它可能是angular本身的一个bug。因此,我在github上提交了一个bug:另请参见中的解释(仅供交叉参考),我现在看到kara的解释,但她提供的示例对我来说不太适用。类型“HtmleElement”上不存在属性“nativeElement”,那么它已经是
nativeElement
。只需删除那里的
.nativeElement
  writeValue(value) {
    if (value) {
      this.value = value;
    }
  }