【发布时间】:2018-01-06 19:33:55
【问题描述】:
我正在尝试使用预定义的颜色构建一个基本的颜色选择器。
为此,我有一个对象“颜色”,其属性为颜色值:
public colors = [
{ value: '#ffffff' },
{ value: '#919191' },
{ value: '#555555' },
// and some more
];
根据网上的一些例子,我在我的 html 中设置了一个选择选项结构:
<select name="role" [(ngModel)]="item.color">
<option *ngFor="let color of colors" [value]="color.value">
<div class="color-box-modal" [style.background]="color.value"></div>
</option>
</select>
这确实为选项创建了一个下拉菜单,尽管里面的颜色没有显示出来。类 color-box-modal 具有高度和宽度值,因为我不打算有一个下拉菜单,但要单击几个彩色框以进行选择。
是否有选择选项结构的替代方案,它允许我没有下拉菜单,而只有几个彩色框?单选按钮/复选框也不是理想的方式,因为我希望自己有一个可点击的字段来响应被点击。
如果没有其他选择,是否可以在单击按钮时进行 ngModel 绑定?
编辑:
在测试了 Osman Ceas 答案的选项 2 之后,我现在有了这个:
<ng-template #content let-c="close" let-d="dismiss">
<i class="close icon" (click)="d('Close click x')"></i>
<div class="header">
Choose a new color
</div>
<div class="content">
<label for="col1" class="color-box-modal" style="background-color: #ffffff">
<input (click)="c('#ffffff')" id="col1" type="radio" class="hidden" [(ngModel)]="item.color" [value]="'#ffffff'">
</label>
<label for="col2" class="color-box-modal" style="background-color: #ffff00">
<input (click)="c('#ffff00')" id="col2" type="radio" class="hidden" [(ngModel)]="item.color" [value]="'#ffff00'">
</label>
<label for="col3" class="color-box-modal" style="background-color: #00ffff">
<input (click)="c('#00ffff')" id="col3" type="radio" class="hidden" [(ngModel)]="item.color" [value]="'#00ffff'">
</label>
</div>
<div class="actions">
<div class="ui button" (click)="c('Close click cancel')">Cancel</div>
</div>
</ng-template>
虽然 ngModel 绑定似乎不起作用。 整个事情在一个模态(模板)中打开,它本身可以工作,只是绑定到 ngModel,正如我所说的那样,没有。
【问题讨论】:
标签: html angular data-binding