2017-02-27 76 views
3

我Angular2 的RC5版我有这样的事情,他们几个如何传递无效形式的单选按钮的值?

<input formControlName="uploadType" id="upload_type-parts_service" name="uploadType" value="parts_service" type="radio" />

有一个平变化我势必

(change)=onUploadTypeChange(???) 

然后我在JS中定义的函数

onUploadTypeChange(uploadType) { 
    this.uploadType = ... 
} 

我有最难的时间试图让收音机b utton值。我的计划是将它传递给onchange函数,并更新显示/隐藏视图中某些元素的值uploadType。 我试过通过thisthis.valuethis.type.controls.uploadType.value但没有任何效果。 type是本身的形式。

有人可以请指出我将如何获得反应形式的值?

+0

[也许这篇文章可以帮助(https://toddmotto.com/angular-2-forms-reactive) – DomeTune

+0

@DomeTune我读了一个,但在它里面没有收音机。事实上,我无法找到反应式无线电处理的良好来源 – Huangism

+0

检查我的其他问题:http://stackoverflow.com/questions/42443903/after-adding-ngmodel-to-a-radio-button-group - 默认检查不寿命/ 42446746 – msanford

回答

1

感谢您的意见msanford的问题,我想通了,$event需要传递

onUploadTypeChange($event) 

然后在我的js

onUploadTypeChange(e) { 
    this.uploadType = e.target.value; 
} 

target返回输入本身

我将收音机的值绑定到[value]=...,但这对反应形式不是必需的,而且是造成问题的原因。我设定值只有values="..."

现在一切正常了,{{ this.type.controls.uploadType.value }}打印预期值

1

您是否尝试过这样的事情?这监视值更改并将订阅放入ngAfterViewInit()方法中。

<div class="form-group" [ngClass]="{'has-error': displayMessage.Repeatable }"> 
     <label class="control-label" for="Repeatable">Repeatable</label> 
     <input type="radio" id="Repeatable" [checked]="checked" 
      formControlName="Repeatable" />{{repeatableValue | uppercase}}    
</div> 

// Component 

ngAfterViewInit(): void { 
    console.log('ngAfterViewInit'); 

    this.setForm.get('Repeatable').valueChanges.subscribe(value => this.repeatableValue = value.toString()); 
} 
+1

我没有试过这个,因为我不想使用订阅。我不认为这是需要在我的情况下,但感谢您的意见 – Huangism