从下拉列表中选择自定义选项后如何启用输入文本框?
How to Enable Input TextBox After selecting Custom Option From Drop Down?
JSON数据
loginValue: any[] = [
{ value: 'col-1', viewValue: 'facebook' },
{ value: 'col-2', viewValue: 'google' },
{ value: 'col-1', viewValue: 'Custom' }
];
HTML
<mat-form-field>
<mat-select placeholder="login Value" [disabled]="isDisabled1">
<mat-option *ngFor="let loginvalue of loginValue" [value]="loginvalue.value">
{{loginvalue.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
<div class="col-md-2">
<mat-form-field class="Custom">
<input matInput placeholder="Enter Custom Value" [disabled]="isDisabled1">
</mat-form-field>
我的下拉选项 facebook/ google/ Custom 中有三个值 当我 select facebook 和 Google 必须禁用文本框输入时,当我单击自定义选项时输入文本框被启用
如何在打字稿中编写逻辑或一切都可以在 HTML 中完成?
提前致谢!
您需要的是模型绑定到变量:[(ngModel)]="selectedValue"
并在 disabled 属性中使用它。然后像这样检查禁用属性
[disabled]="selectedValue.viewValue!=='Custom'"
请注意:[value]="loginvalue"
检查示例 here 你会找到 ngmodel 示例
这是我更改的代码。
<mat-form-field>
<mat-select placeholder="login Value" [(ngModel)]="selectedValue" [disabled]="isDisabled1">
<mat-option *ngFor="let loginvalue of loginValue" [value]="loginvalue">
{{loginvalue.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
<div class="col-md-2">
<mat-form-field class="Custom">
<input matInput placeholder="Enter Custom Value" [disabled]="selectedValue.viewValue!=='Custom'">
</mat-form-field>
</div>
您可以通过订阅您选择的选项并操作 enabling/disabling 您的输入控件来尝试使用 Reactive Forms。
TS:
changeState() {
this.form.get('logintype').valueChanges
.subscribe(res => {
if (res === "Custom") { this.form.get('customInput').enable() }
else { this.form.get('customInput').disable() }
});
}
HTML:
<form [formGroup]="form">
<mat-form-field>
<mat-select formControlName="logintype" placeholder="Select an option" (selectionChange)="changeState()">
<mat-option *ngFor="let option of loginValue" [value]="option.viewValue">
{{ option.viewValue }}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<input matInput formControlName="customInput" type="text">
</mat-form-field>
</form>
这是 StackBlitz
上的示例代码
JSON数据
loginValue: any[] = [
{ value: 'col-1', viewValue: 'facebook' },
{ value: 'col-2', viewValue: 'google' },
{ value: 'col-1', viewValue: 'Custom' }
];
HTML
<mat-form-field>
<mat-select placeholder="login Value" [disabled]="isDisabled1">
<mat-option *ngFor="let loginvalue of loginValue" [value]="loginvalue.value">
{{loginvalue.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
<div class="col-md-2">
<mat-form-field class="Custom">
<input matInput placeholder="Enter Custom Value" [disabled]="isDisabled1">
</mat-form-field>
我的下拉选项 facebook/ google/ Custom 中有三个值 当我 select facebook 和 Google 必须禁用文本框输入时,当我单击自定义选项时输入文本框被启用 如何在打字稿中编写逻辑或一切都可以在 HTML 中完成? 提前致谢!
您需要的是模型绑定到变量:[(ngModel)]="selectedValue"
并在 disabled 属性中使用它。然后像这样检查禁用属性
[disabled]="selectedValue.viewValue!=='Custom'"
请注意:[value]="loginvalue"
检查示例 here 你会找到 ngmodel 示例
这是我更改的代码。
<mat-form-field>
<mat-select placeholder="login Value" [(ngModel)]="selectedValue" [disabled]="isDisabled1">
<mat-option *ngFor="let loginvalue of loginValue" [value]="loginvalue">
{{loginvalue.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
<div class="col-md-2">
<mat-form-field class="Custom">
<input matInput placeholder="Enter Custom Value" [disabled]="selectedValue.viewValue!=='Custom'">
</mat-form-field>
</div>
您可以通过订阅您选择的选项并操作 enabling/disabling 您的输入控件来尝试使用 Reactive Forms。
TS:
changeState() {
this.form.get('logintype').valueChanges
.subscribe(res => {
if (res === "Custom") { this.form.get('customInput').enable() }
else { this.form.get('customInput').disable() }
});
}
HTML:
<form [formGroup]="form">
<mat-form-field>
<mat-select formControlName="logintype" placeholder="Select an option" (selectionChange)="changeState()">
<mat-option *ngFor="let option of loginValue" [value]="option.viewValue">
{{ option.viewValue }}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<input matInput formControlName="customInput" type="text">
</mat-form-field>
</form>
这是 StackBlitz
上的示例代码