<div class="filter">
Filter by:
<nb-select placeholder="Default" status="danger">
<nb-option *ngFor="let criterion of filterConfig | keyvalue" [value]="criterion.key">{{criterion.key}}</nb-option>
</nb-select>
<nb-select placeholder="Default" status="danger">
<nb-option *ngFor="let option of filterConfig | keyvalue" [value]="option.value">{{option.value}}</nb-option>
</nb-select>
</div>
filterConfig
-- элементы первого select'а, а значения -- второго.filterConfig = {
default: [...],
contractStatus: [...],
contractType: [...],
userId: [...]
}
<div class="filter">
Filter by:
<div *ngFor="let criterion of filterConfig | keyvalue">
<nb-select placeholder="Default" status="danger">
<nb-option [value]="criterion.key">{{criterion.key}}</nb-option>
</nb-select>
<nb-select placeholder="Default" status="danger">
<nb-option [value]="criterion.value">{{criterion.value}}</nb-option>
</nb-select>
</div>
</div>
<select #optSelect (change)="kindSelect.kinds = filterConfig[optSelect.value]">
<option *ngFor="let opt of filterConfig | keyvalue">{{opt.key}}</option>
</select>
<select #kindSelect>
<option *ngFor="let kind of (kindSelect.kinds || filterConfig.fruit)">{{kind}}</option>
</select>
public filterConfig = {
fruit: ['apple', 'orange', 'pineapple', 'grape'],
vegetable: ['carrot', 'potato', 'dill', 'cucumber']
}
kindSelect.kinds
была введена из-за того, что если просто взять optSelect.value
на начальной отрисовке шаблона value еще нет, optSelect.value
появляется при первой детекции изменений, и в дев моде на втором проходе детекции обнаруживаются несоответствия значений с шаблоном, что вызовет ExpressionChangedAfterItHasBeenCheckedError.