首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入点击,添加类Angular 8

输入点击,添加类Angular 8
EN

Stack Overflow用户
提问于 2020-02-14 18:33:55
回答 2查看 537关注 0票数 2

我有一个数组,它产生一组问题。它将它们显示为单选按钮。

这是HTML

代码语言:javascript
复制
          <div *ngSwitchCase="'radio'">
            <ul>
              <li
                *ngFor="let option of question.options"
                class="col-12 col-sm-6 p-0 purchase-type"
              >
                <input
                  class="form-control"
                  id="{{ option.id }}"
                  formControlName="{{ question.name }}"
                  value="{{ option.value }}"
                  type="radio"
                  (click)="clickEvent()" 
                  [ngClass]="status ? 'success' : 'danger'"
                />
                <label for="{{ option.id }}" class="btn btn-choice {{ option.class }}">
                  <span class="hidden-xs">{{ option.id }} </span
                  ><span class="hidden-xs"> (</span> {{ option.label
                  }}<span class="hidden-xs">)</span></label
                >
              </li>
            </ul>
          </div>

.ts中的布尔值

代码语言:javascript
复制
  status: boolean = false;
  clickEvent() {
    this.status = !this.status;
  }

因为这是一个数组,所以我很难在每个数组之间切换一个类。此时,当我选择任何单选按钮时,所有的单选按钮元素都会应用相同的类。

我如何才能仅将此应用于单击的单选按钮?

对Angular来说还是个新手。感谢任何帮助或建议。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2020-02-14 18:39:20

也许这会对你有帮助

代码语言:javascript
复制
<input
    class="form-control"
    id="{{ option.id }}"
    formControlName="{{ question.name }}"
    value="{{ option.value }}"
    type="radio"
    (click)="clickEvent($event)"  // add $event here
    [ngClass]="status ? 'success' : 'danger'"
/>

并在你的组件中注入渲染。确保根据状态变量检查您的条件

代码语言:javascript
复制
  constructor(private renderer: Renderer2) { }

  clickEvent(event: any) {
    this.status ? 
    this.render.addClass(event.target,"active") : 
    this.render.removeClass(event.target,"active"); // set your class here
  }
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 19:07:11

如果您想在切换(选择)后设置单选按钮的样式,有几种方法可以做到这一点。一种方法如下所示。

侦听formControl Value

代码语言:javascript
复制
<input [formControlName]="radio" value="value" [ngClass]="form.controls.get('radio').value == 'value' ? 'active' : 'inactive'"></input>

您还可以将无线输入转换为组件。

组件

然后给它一个通用的模板引用,并检查它是否被选中。

(警告:这可能会有点复杂,因为您必须向下传递formControlName和fromGroup,无论是作为输入还是实现controlValueAccessor)

代码语言:javascript
复制
<input #radio [ngClass]="radio.checked ? 'active' : 'inactive'"></input>

或者你也可以在typescript中调用一个函数来解析它。

函数

代码语言:javascript
复制
<input [formControlName]="radio" value="value" [ngClass]="checked(value) ? 'active' : 'inactive'"></input>

checked(value) {
    if(value == this.form.control['radio'].value) {
        return true
    } else {
        return false
    }

}

我相信还有其他更整洁的方法,但希望上面的方法能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60224582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档