我的Angular 7项目中有以下两个选择元素:
我的要求是根据从第一个选择中选择的值填充第二个选择中的元素。
到目前为止,我已经尝试了以下方法:
这是代码:
app.component.html:
<mat-form-field>
<mat-label>Select Master Bot</mat-label>
<mat-select [(ngModel)]="selectedMasterBot">
<mat-option *ngFor="let masterBot of masterBotList"
[value]="masterBot.value">{{ masterBot.view }}</mat-option></mat-select>
</mat-form-field>
<mat-form-field>
<mat-label>Select UseCase</mat-label>
<mat-select [(ngModel)]="selectedUseCase">
<mat-option *ngFor="let useCase of
masterBotUseCaseMapping.selectedMasterBot" [value]="useCase.value">{{
useCase.view}}
</mat-option>
</mat-select>
</mat-form-field>
<button mat-button (click)="print()">Click me</button>
app.component.ts:
public selectedMasterBot;
public selectedUseCase;
public masterBotUseCaseMapping = {
"select1Value": [
{
"view": "incomprehension",
"value": "incomprehensionID"
},
{
"view": "greetings",
"value": "greetingsID"
}
], "select2Value": [
{
"view": "incomprehension",
"value": "incomprehensionID"
}
]
}
public masterBotList = [{
view: 'select1',
value: 'select1Value'
},
{
view: 'select2',
value: 'select2Value'
}]
答案 0 :(得分:1)
简单使用ngModel
可以解决您的级联下拉问题
演示在https://stackblitz.com/edit/angular-cascaded-dropdown
数据中的映射似乎不正确,您需要修复
更新小提琴https://stackblitz.com/edit/angular-wteh9o以支持您的数据结构。
这里的主要问题是您正在尝试访问属性值为dot notation
的属性,而您应该使用array notation
作为
<mat-option *ngFor="let useCase of
masterBotUseCaseMapping[selectedMasterBot]" [value]="useCase.value">