我有2个选择,其中有2个对象数组以模态填充:
<select class="browser-default" id="gebied"
[(ngModel)]="filteredGebied"
(ngModelChange)="onChange($event)">
<option *ngFor="let gebied of list1"
value="{{gebied.id}}">{{gebied.beschrijving}}</option>
</select>
<select class="browser-default" id="domein" [(ngModel)]="filteredDomein">
<option *ngFor="let domein of list2"
value="{{domein.id}}">{{domein.beschrijving}}</option>
</select>
现在,我想基于列表1中的选定项目更改第二个选择(列表2)中的项目。
onChange(list1Id){
...
this.list2 = ...
}
问题是我的第二个选择(列表2)中的选择选项没有改变。
有时会出现以下错误:
ExpressionChangedAfterItHasBeenCheckedError:表达式已更改 经过检查后。上一个值:'ngForOf:
如何解决所有问题?
答案 0 :(得分:1)
它应该确实有效。例如,在这里我检查是否选择了a
,这意味着根据您的绑定filteredGebied
为1
,然后list2
必须更改!
export class AppComponent {
list1 = [{ id: '1', beschrijving: 'a' }, { id: '2', beschrijving: 'b' }];
list2 = [{ id: '1', beschrijving: 'aaa' }, { id: '2', beschrijving: 'bbbb' }];
filteredGebied;
filteredDomein;
onChange(event) {
if (this.filteredGebied === '1') {
this.list2 = [{ id: '1', beschrijving: 'xxx' }, { id: '2', beschrijving: 'yyyy' }];
}
}
}
答案 1 :(得分:0)
如果我在启动时不填充第二个选择项,那么它显然可以工作。 但这对我的应用程序来说不是问题。