输入不同参数时,将一个参数设置为某个值 - NgSwitch?

时间:2017-05-15 06:36:20

标签: angular ng-switch

我有一个应用程序,您可以在其中向数据库添加或编辑值。

我想这样做,当我将一个参数设置为任何东西时(默认为空),第二个参数设置为特定值。

进一步解释我实际上要做的事情:

HTML code:

<form class=form-group>
    <td><label>Status Code</label></td>
    <input type="text" #StatusCode (ngModel)="StatusCodes" value="{{StatusCodes}}">
</form>                                         

<form class=form-group>
    <td><label>Eta</label></td>
    <input type="text" #Eta (ngModel)="Etas" value="{{Etas}}">
</form>
<form class=form-group>
    <td><label>Etd</label></td>
    <input type="text" #Etd (ngModel)="Etds" value="{{Etds}}">
</form>
<form class=form-group>
    <td><label>Ata</label></td>
    <input type="text" #Ata (ngModel)="Atas" value="{{Atas}}">
</form>
<form class=form-group>
    <td><label>Atd</label></td>
    <input type="text" #Atd (ngModel)="Atds" value="{{Atds}}">
</form>

StatusCodes的默认值为&#34;已宣布&#34;并且只有Eta具有指定值(其他3为空)。输入Ata的值后,我希望将StatusCodes值自动设置为&#34; inport&#34;。

我猜测ngswitch可以在这种情况下使用,但我不知道如何。 在这种情况下,它的语法是什么?

如果有更好的方法来解决这个问题,请告诉我如何实现这一目标。

1 个答案:

答案 0 :(得分:2)

我不认为ngSwitch会对您有所帮助,因为它基本上只是ngIf的扩展 - 所以显示和隐藏DOM元素。到目前为止,最强大的选项是使用事件在TypeScript中显式处理它。

例如,像:

<form class=form-group>
    <td><label>Status Code</label></td>
    <input type="text" #StatusCode (ngModel)="StatusCodes" value="{{StatusCodes}}">
</form>                                         

<form class=form-group>
    <td><label>Eta</label></td>
    <input type="text" #Eta (ngModel)="Etas" value="{{Etas}}">
</form>
<form class=form-group>
    <td><label>Etd</label></td>
    <input type="text" #Etd (ngModel)="Etds" value="{{Etds}}">
</form>
<form class=form-group>
    <td><label>Ata</label></td>
    <input type="text" #Ata (ngModel)="Atas" value="{{Atas}}" (change)="updateStatusCode('ata')">
</form>
<form class=form-group>
    <td><label>Atd</label></td>
    <input type="text" #Atd (ngModel)="Atds" value="{{Atds}}">
</form>

然后:

updateStatusCode(type) {
  switch (type) {
    case 'ata':
      /* set status code */
      this.StatusCodes = 'import';
      break;
    case 'atd':
      /* etc */
      break;
    case 'eta':
      /* etc */
      break;
    case 'etd':
      /* etc */
      break;
  }
}

它不是超级优雅,但它最容易改变,最容易测试(如果你要编写单元测试)。

我还没有执行上面的代码,所以请记住,您可能需要稍微调整一下。