CH4*_*H4B 0 javascript angular-material angular
我有一个用户列表供团队选择。假设我选择了一个用户,那么他在团队中可以是活跃的或不活跃的。现在,如果我根本不选择他,那么我应该既不能激活他,也不能使其失效。这是由复选框和滑块完成的,如下所示:
当我单击复选框时,我需要禁用切换。我尝试通过以下方式执行此操作:
$("#2048").prop('disabled', true);
Run Code Online (Sandbox Code Playgroud)
要么
document.querySelector('[name="' + '#2048' + '"]').disabled = true;
Run Code Online (Sandbox Code Playgroud)
也不起作用(是的,我知道ID不应该是数字,但这是因为每个切换都在* ngFor内。不过,我可以将它们用作数字,因为jQuery仍然可以选择它们)
无论哪种方式,我都坚信做到这一点的唯一方法是将“ disabled”属性数据绑定为一些返回“ true”或“ false”值的后端变量。
就像是:
<mat-slide-toggle
[id]='data.id'
class="status"
[disabled]='disableVariable'
>Active
</mat-slide-toggle>
Run Code Online (Sandbox Code Playgroud)
然后:
disableVariable = someFunction(); //that returns true or false
Run Code Online (Sandbox Code Playgroud)
这行得通,但是变量太通用了,我的意思是,每个滑块都将被禁用。另一个问题是,这不是“实时”的,因此我无法多次禁用和启用。
基本上,它不起作用。
我在这里应该做什么?如果我有办法使用其唯一ID选择那些标签,那将解决问题,但是jQuery或Javascript的Query选择器都不能禁用或启用此标签。
编辑:
我的代码还有一点:
<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>
Run Code Online (Sandbox Code Playgroud)
当我添加([ngModel)]时,我的复选框停止工作,是的,我正在导入FormsModule
小智 5
您可以使用双向绑定来更新复选框的状态,如下所示:
[(ngModel)]在输入字段中添加和禁用属性
// Declare variable in component
CheckboxVar:boolean;
// In Html write below code
<input type="checkbox" [(ngModel)]="CheckboxVar" [disabled]="!CheckboxVar">
// Disabled checkbox when checkboxvar = false;
<input type="checkbox" [disabled]="!CheckboxVar">
Run Code Online (Sandbox Code Playgroud)
CheckboxVar根据需要在组件中更新变量。
mat-slide-toggle的示例
TS代码:
checked = false;
disabled = false;
Run Code Online (Sandbox Code Playgroud)
HTML代码:
<input type="checkbox" [(ngModel)]="checked">
<mat-slide-toggle [disabled]="checked">
Slide me!
</mat-slide-toggle>
Run Code Online (Sandbox Code Playgroud)
现在在上面的示例中,如果选中了选中的复选框,则选中的变量将被更新,如果选中的值为true,则将禁用切换。
| 归档时间: |
|
| 查看次数: |
2562 次 |
| 最近记录: |