Angular 2+ tyring将一个复选框(mat-checkbox)Angular Material值从True或False绑定到char值'T','F'

时间:2018-06-01 16:37:07

标签: angular forms typescript angular-material2

需要帮助尝试将我的Checkbox(mat-checkbox)Angular Material的值更改为“T”和“F”等值,这些值可以在我的表单与json对象一起提交时传递。 JSON对象中的'T'或'F'在我的后端翻转一个char标志。任何帮助将不胜感激,不知道为什么我似乎无法弄明白。

- - - - HTML ------------

<div class="form-check">
  <label class="form-check-label" style="padding-right: 10px;">Send to MIP</label>
  <mat-checkbox name="mip" [ngModel]="mip"  class="form-check-input" #mip="ngModel"></mat-checkbox>
</div>

------当前价值----

{ "mip": true } 

2 个答案:

答案 0 :(得分:0)

您只能为复选框设置一个布尔值,作为解决方法可以做的是当您提交表单时,在您监听表单提交的方法中,您可以使用三元运算符来指定“T”或“ F'。 例如,如果您将formData作为:

formData = {
    "mip" : true
}

然后使用:

(formData['mip']===true) ? formData['mip'] = 'T' : formData['mip] = 'F'

答案 1 :(得分:0)

您没有将复选框UI更改绑定到模型。 [ngModel]只是将模型更改绑定到UI /视图。使用[(ngModel)]进行双向绑定,或者为视图到模型绑定添加(ngModelChange)。要让它处理“T”和“F”,实现一个getter和setter:

<mat-checkbox [(ngModel)]="mip">Check me!</mat-checkbox>

get mip():boolean {
  return this._mip === "T";
}
set mip(value: boolean) {
  if(value) {
    this._mip = "T";
  } else {
    this._mip = "F";
  }
}
_mip: string = "T";

或者

<mat-checkbox #cb [ngModel]="getMip()" (ngModelChange)="setMip(cb.checked)">Check me!</mat-checkbox>

getMip():boolean {
  return this._mip === "T";
}
setMip(value: boolean) {
  if(value) {
    this._mip = "T";
  } else {
    this._mip = "F";
  }
}
_mip: string = "T"