angular - 在 Angular 4 中更改事件的按钮类

标签 angular typescript

我正在设计 MCQ 测试,我想在点击它时将选定的按钮选项样式显示为绿色。 我已经准备好 angular 1 的代码,但无法将其转换为 angular 4 。 来自 Angular 1 的代码 -

<div class="row">
                                <table>
                                    <tr ng-repeat="option in question_option.options" class="mtq_clickable col-md-6 col-sm-6">
                                        <td class="mtq_letter_button_td">
                                            <div ng-class="{mtq_css_letter_selected : option.id == question_option.selectedAns}" ng-click="clicked($index+1)" class="mtq_css_letter_button" alt="Question 1, Choice 1">{{option.character}}</div>
                                        </td>
                                        <td class="mtq_answer_td"><label class="divlabel">{{option.text}}</label></td>
                                    </tr>
                                </table>
                            </div>
                    </div>        

enter image description here

Angular 4 中的代码

  <table>
                            <tr *ngFor="let options of currentquiz.options" class="mtq_clickable col-md-6 col-sm-6">
                                <td class="mtq_letter_button_td">

                                    <div [ngClass]="{'mtq_css_letter_button': !clicked, 'mtq_css_letter_selected': clicked}" (click)="clicked = true" alt="Question 1, Choice 1">{{options.renderingtext}}</div>
                                </td>
                                <td class="mtq_answer_td">{{options.text}}</td>
                            </tr>

同样我想通过angular 4实现。请提供一些想法。目前,当我单击一个按钮时,所有选项样式都会变为绿色。

最佳答案

好吧,在 Angular 1 中,您当前正在保存您单击的选项的 ID,而在 Angular 4 中,您正在更改所有按钮共享的公共(public)变量。

为什么不像你在 angularjs 中做的那样?这是在 ng 类中使用三元运算符的超快速方法

 <tr *ngFor="let options of currentquiz.options" class="mtq_clickable col-md-6 col-sm-6">
    <td class="mtq_letter_button_td">
       <div [ngClass]="{clicked(option.id) ? 'mtq_css_letter_selected': 'mtq_css_letter_button'}" (click)="click(option.id)" alt="Question 1, Choice 1">{{options.renderingtext}}</div>
    </td>
    <td class="mtq_answer_td">{{options.text}}</td>
 </tr>

在你的 component.ts 中

public clickedId : number;

click(id: number) {
    this.clickedId = id;
}

clicked(id: number): boolean {
   return this.clickedId === id;
}

关于angular - 在 Angular 4 中更改事件的按钮类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436652/

相关文章:

javascript - 具有间隔的Angular2 Observable

c# - 使用 Angular : Unexpected token P in JSON at position 0 at JSON. 解析下载 .xls 文件(<匿名>)

css - 如何为 Angular 6 元素全局添加自定义 CSS 文件

angular - 如何使用 ForkJoin 处理 http 请求序列 Angular 4

javascript - 从 js 文件生成 .d.ts 的过程

Angular 通用 - TypeError : Converting circular structure to JSON

typescript - 从现有类型添加属性到类型

javascript - 防止 IE11 在 Angular 2 中缓存 GET 调用

Typescript通过带有索引和值的字符串循环

node.js - 使用TypeScript的Express路由的返回类型