【发布时间】:2019-06-02 09:12:57
【问题描述】:
我有一个可供团队选择的用户列表。想象一下,我选择了一个用户,他在他的团队中可以是活跃的也可以是不活跃的。现在,如果我根本不选择他,我应该无法激活或停用他。 这是由一个复选框和一个滑块组成的,如下所示:
当我单击复选框时,我需要禁用切换。我试过这样做:
$("#2048").prop('disabled', true);
或
document.querySelector('[name="' + '#2048' + '"]').disabled = true;
也不起作用(是的,我知道 ID 不应该是数字,但这是因为每个切换都在 *ngFor 内。不过,我可以将它们用作数字,因为 jQuery 无论如何都可以选择它们)
无论哪种方式,我坚信做这样的事情的唯一方法是将“禁用”属性数据绑定为一些返回“真”或“假”值的后端变量。
类似:
<mat-slide-toggle
[id]='data.id'
class="status"
[disabled]='disableVariable'
>Active
</mat-slide-toggle>
然后:
disableVariable = someFunction(); //that returns true or false
这可行,但变量“太通用”,我的意思是,每个滑块都将被禁用。另一个问题是这不是“实时”的,所以我不能多次禁用和启用。
基本上,它不做这项工作。
我应该在这里做什么?如果我有办法使用它们的唯一 ID 选择这些标签,那将解决问题,但 jQuery 或 Javascript 的查询选择器都不能禁用或启用此标签。
编辑:
多一点我的代码:
<div id="table" *ngFor="let data of User; let i = index">
<div [id]='data.id' *ngIf='data.user== 0' class="item">
<label class="container" style="width: 90%">
<input
type="checkbox"
*ngIf='data.status== 0'
id={{i}}
class="checkbox"
color=primary
checked>
<span class="checkmark"></span>
<div *ngIf='data.status== 0'>{{data.name}}
<mat-slide-toggle
[id]='data.id'
(change)=toggle(data.id)
*ngIf='data.status== 0'
color=primary
class="status"
>Active
</mat-slide-toggle>
</div>
</label>
</div>
</div>
当我添加 ([ngModel)] 时,我的复选框停止工作,是的,我正在导入 FormsModule
【问题讨论】:
-
你不应该使用带有 Angular 的 jQuery 请检查如何在 Angular 中实现表单:angular.io/guide/forms
-
在示例中,您已经禁用了工具:material.angular.io/components/slide-toggle/examples
-
它不起作用,因为我的复选框不重要(而且它不可能)
-
this demo 对您有帮助吗?
-
哇,这真的是我需要的。您可以将其发布为答案吗?
标签: javascript angular angular-material