Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 从组件启用后,复选框不再可选中-角度2/4/5_Angular_Typescript_Checkbox - Fatal编程技术网

Angular 从组件启用后,复选框不再可选中-角度2/4/5

Angular 从组件启用后,复选框不再可选中-角度2/4/5,angular,typescript,checkbox,Angular,Typescript,Checkbox,让我先解释一下我想要实现的场景 我有一个选择框,假设它有i1、i2、i3、i4、i5这样的值。 除了选择框,我还有一个复选框 该复选框最初将被禁用。 现在,当我选择i2或i3时,我想启用复选框 如果它不是i2和i3,则需要禁用并取消选中复选框 以下是我的DOM代码: <mat-select placeholder="item" [(ngModel)]="selectedItem" [formControl]="selectedItem[ix]" required (

让我先解释一下我想要实现的场景

我有一个选择框,假设它有i1、i2、i3、i4、i5这样的值。 除了选择框,我还有一个复选框

该复选框最初将被禁用。 现在,当我选择i2或i3时,我想启用复选框

如果它不是i2和i3,则需要禁用并取消选中复选框

以下是我的DOM代码:

<mat-select placeholder="item" [(ngModel)]="selectedItem" [formControl]="selectedItem[ix]" required
            (ngModelChange)="allowCheck(ix, checkBox)">
    <mat-option *ngFor="let item of allItems()" [value]="item">
        {{ item }}
    </mat-option>
</mat-select>

<mat-checkbox [(ngModel)]="checkMe" #checkBox>
</mat-checkbox>

此解决方案启用了复选框,但我无法选中它。有人能告诉我这里出了什么问题吗?

您必须将字符串作为字符串传递

这是类型为“any”的空变量数组。通过“==某个字符串”进行比较,它们永远不会返回true

allItems() {
    return [i1, i2, i3, i4, i5];
}
这样试试看

allItems() {
    return ['i1', 'i2', 'i3', 'i4', 'i5'];
}
或者

const i1='i1';
const i2='i2';
const i3='i3';
const i4='i4';
const i5='i5';

allItems() {
    return [i1, i2, i3, i4, i5];
}

您必须将字符串作为字符串传递

这是类型为“any”的空变量数组。通过“==某个字符串”进行比较,它们永远不会返回true

allItems() {
    return [i1, i2, i3, i4, i5];
}
这样试试看

allItems() {
    return ['i1', 'i2', 'i3', 'i4', 'i5'];
}
或者

const i1='i1';
const i2='i2';
const i3='i3';
const i4='i4';
const i5='i5';

allItems() {
    return [i1, i2, i3, i4, i5];
}

因此,答案就在这里,只是为了让其他人不用花一天的时间

最初(onload)使复选框禁用

ngOnInit() {
    this.disabledCheck = true;
}
allowCheck(ix: number, checkBox) {
    checkBox.disabled   = true;
    if(this.selectedItem === 'i2' || this.selectedItem === 'i3'){
        this.disabledCheck = false;
    }
    else {
        this.disabledCheck = true;
        this.checkMe = false;
    }
}
HTML:


{{item}}

因此,这里是答案,只是为了让其他人不用花一天的时间

最初(onload)使复选框禁用

ngOnInit() {
    this.disabledCheck = true;
}
allowCheck(ix: number, checkBox) {
    checkBox.disabled   = true;
    if(this.selectedItem === 'i2' || this.selectedItem === 'i3'){
        this.disabledCheck = false;
    }
    else {
        this.disabledCheck = true;
        this.checkMe = false;
    }
}
HTML:


{{item}}

您需要从视图模板中提供一些代码,以便人们能够提供帮助。嘿,我已经用一些代码更新了我的问题。请看一看!您需要从视图模板中提供一些代码,以便人们能够提供帮助。嘿,我已经用一些代码更新了我的问题。请看一看!