当前位置: 首页 > 知识库问答 >
问题:

如何在typescript中为变量设置类型字符串|编号

谈萧迟
2023-03-14

我试图重置文本框值。试图设置类型字符串|数字的变量,但我得到一个错误。那么如何在打字稿中将两种类型设置为单个变量。请帮助找到解决方案。

  resetFn() {
     var values = Object.values(this.selVal); 
     var elements = document.getElementsByTagName("input");
      for (var i = 0; i < elements.length; i++) {
       if (elements[i].type == "text") {
       elements[i].value = ""; 
       elements[i].value = values[i]; // getting error
       }
   }}

错误:

元素[i]. value=值[i];

类型“string | number”不可分配给类型“string”。类型“number”不可分配给类型“string”

演示:https://stackblitz.com/edit/angular-dzxsg4?file=src/app/app.component.ts

共有1个答案

屈昊天
2023-03-14

我会用反应式的形式,然后做这样的事情:

export class AppComponent {
  name = "Angular";

  formGroup = new FormGroup({
    name: new FormControl('Test'),
    gender: new FormControl('Male'),
    id: new FormControl(1)
  });

  selVal = {
    name: "Test",
    gender: "Male",
    id: 1
  };

  resetFn() {
    this.formGroup.reset();
    // or
    this.formGroup.get('name').setValue('Test');
    this.formGroup.get('gender').setValue('Male');
    this.formGroup.get('id').setValue(0);
  }

  updateFn() {
    this.selVal = { ...this.formGroup.value }
  }
}

在模板中:

<tbody [formGroup]="formGroup">
    <tr *ngFor="let item of selVal | keyvalue">
      <td>{{item.key}}</td>
      <td><input type="text" [formControlName]="item.key"></td>
    </tr>
</tbody>
 类似资料: