angular - 如何使用 Angular 从组件到模板选择选项按钮?

标签 angular typescript

我想以编程方式选择性别单选按钮。我正在使用 Angular 7。这是我的代码: (html)

<input #male type="radio" name="gender" (click)="setGender('Male')"> Male
<input #female type="radio" name="gender" (click)="setGender('Female')"> Female

我尝试使用@ViewChild 但没有获得任何选定的属性来操作。

(ts)

@ViewChild('male') male_btn: ElementRef;
@ViewChild('female') female_btn: ElementRef;
setGender(g: any) {
    this.gender = g;
  }
editPerson(person) {
    console.log(person.name);
    this.name_field.nativeElement.value = person.name;
    this.salary_field.nativeElement.value = person.salary;

    if (person.gender === 'Male') {
      //this.male_btn.nativeElement;
    }

    if (person.gender === 'Female') {
      //this.female_btn.nativeElement;
    }

  }

这里的 editPerson 函数将在 View 中按下编辑按钮时执行。

我想要的是当 person.gender 值为 male 时, View 中的 male 按钮将被选中,并相应地为 female 选择。

最佳答案

像这样使用 [(ngModel)]="myRadio"

<input type="radio" value="male" [(ngModel)]="myRadio" name="gender" (click)="setGender('Male')" > Male
<input type="radio" value="female" [(ngModel)]="myRadio" name="gender" (click)="setGender('Female')"> Female

并在你的 ts 文件中定义 myRadio,如 myRadio:string;

因此 你可以像

这样使用这个值
editPerson() {

   if (myRadio === 'Male') {
      //this.male_btn.nativeElement;
    }

    if (myRadio === 'Female') {
      //this.female_btn.nativeElement;
    }

  }

或者调用 editPerson 来获取单选按钮的事件和值

并且,不要使用 javascript 来控制 Angular 中的 DOM 元素,这违反了 Angular 哲学

关于angular - 如何使用 Angular 从组件到模板选择选项按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54016722/

相关文章:

javascript - 将变量从index.html发送到app.component.ts

angular - 没有 Http StaticInjectorError 的提供者

angular - 使用 ngrx 从 Effect 访问 store

Angular 4 - 无法解析用于路由的子模块

angular - 在 Angular 4+ 中绑定(bind)到属性/函数与变量是不是很糟糕?

javascript - 为什么在 Typescript 中导入文件时需要添加 .js 扩展名,而在 Angular 导入中则不需要?

typescript - 期望 TypeScript 中的可变参数方法至少有一个参数

javascript - Google 图表 - 超过 1 个差异列

typescript - ESLint 不相信我在 tsconfig 中包含了 .vue 文件

angular - 在尝试显示值之前检查它是否存在 Angular 4