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 /自定义当我选择facebook和Google时,必须禁用文本框输入,而当我单击“自定义”选项时,将启用输入文本框 如何在打字稿中编写逻辑,否则所有事情都只能在HTML中完成? 在此先感谢!
答案 0 :(得分:3)
您可以通过订阅选定的选项并使用启用/禁用输入控件来尝试使用反应式表单。
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上的示例代码
答案 1 :(得分:1)
您需要的是将模型绑定到变量[(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>