Как реализовать множественный выбор DropDow с группировкой в приложении Angular 2?
Как я могу реализовать раскрывающийся список множественного выбора с группировкой в моем приложении angular2? Мне нужно выпадающее меню, как изображения, связанные в этом вопросе. Как реализовать группировку в ng-select of Angular2?, Пожалуйста, помогите мне..... Я застрял на этом в последние несколько дней
Я пробовал angular-ngselect, как показано ниже, но это:
Компонент Html:
<form [formGroup]="form" class="selector-form">
<div class="marTop20">
<ng-select [options]="options1"
[multiple]="multiple1"
placeholder="Select multiple"
formControlName="selectMultiple"
(opened)="onMultipleOpened()"
(closed)="onMultipleClosed()"
(selected)="onMultipleSelected($event)"
(deselected)="onMultipleDeselected($event)">
</ng-select>
</div>
</form>
Код компонента в файле ts:
export class FilterClientSelectorComponent implements OnInit {
form: FormGroup;
multiple1: boolean = true;
options1: Array<any> = [];
selection: Array<string>;
@ViewChild('preMultiple') preMultiple;
logMultipleString: string = '';
constructor() {
let numOptions = 100;
let opts = new Array(numOptions);
for (let i = 0; i < numOptions; i++) {
opts[i] = {
value: i.toString(),
label: i.toString(),
groupname:'a'
};
}
this.options1 = opts.slice(0);
}
ngOnInit() {
this.form = new FormGroup({});
this.form.addControl('selectMultiple', new FormControl(''));
}
private scrollToBottom(elem) {
elem.scrollTop = elem.scrollHeight;
}
}
И это дает мне множественный выбор, но не группирование:
Токовый выход:
Требуемый выход:
5 ответов
Попробуйте это в раскрывающемся списке Multi-Select с несколькими атрибутами и функциями, которые могут вам помочь.
Я использовал дизайн материала для реализации той же функциональности... И вот как я это сделал.. В "fileName.component.html"
<mat-form-field>
<mat-select placeholder="Pokemon" [formControl]="pokemonControl" multiple>
<mat-option>-- None --</mat-option>
<mat-optgroup *ngFor="let group of pokemonGroups" [label]="group.name"
[disabled]="group.disabled">
<mat-option *ngFor="let pokemon of group.pokemon" [value]="pokemon.value">
{{pokemon.viewValue}}
</mat-option>
</mat-optgroup>
</mat-select>
</mat-form-field>
Не забудьте добавить "несколько".. Вы можете видеть это во второй строке моего файла.html.. И в "fileName.component.ts"
import {Component} from '@angular/core';
import {FormControl} from '@angular/forms';
export interface Pokemon {
value: string;
viewValue: string;
}
export interface PokemonGroup {
disabled?: boolean;
name: string;
pokemon: Pokemon[];
}
/** @title Select with option groups */
@Component({
selector: 'select-optgroup-example',
templateUrl: 'select-optgroup-example.html',
styleUrls: ['select-optgroup-example.css'],
})
export class SelectOptgroupExample {
pokemonControl = new FormControl();
pokemonGroups: PokemonGroup[] = [
{
name: 'Grass',
pokemon: [
{value: 'bulbasaur-0', viewValue: 'Bulbasaur'},
{value: 'oddish-1', viewValue: 'Oddish'},
{value: 'bellsprout-2', viewValue: 'Bellsprout'}
]
},
{
name: 'Water',
pokemon: [
{value: 'squirtle-3', viewValue: 'Squirtle'},
{value: 'psyduck-4', viewValue: 'Psyduck'},
{value: 'horsea-5', viewValue: 'Horsea'}
]
},
{
name: 'Fire',
disabled: true,
pokemon: [
{value: 'charmander-6', viewValue: 'Charmander'},
{value: 'vulpix-7', viewValue: 'Vulpix'},
{value: 'flareon-8', viewValue: 'Flareon'}
]
},
{
name: 'Psychic',
pokemon: [
{value: 'mew-9', viewValue: 'Mew'},
{value: 'mewtwo-10', viewValue: 'Mewtwo'},
]
}
];
}
Если вы хотите больше информации об этом, просто перейдите по этой ссылке
Вы можете использовать angular-2-dropdown-multiselect, он также имеет групповую опцию.
Вы должны отформатировать данные в соответствии с этим
// Labels / Parents
myOptions: IMultiSelectOption[] = [
{ id: 1, name: 'Car brands', isLabel: true },
{ id: 2, name: 'Volvo', parentId: 1 },
{ id: 3, name: 'Honda', parentId: 1 },
{ id: 4, name: 'BMW', parentId: 1 },
{ id: 5, name: 'Colors', isLabel: true },
{ id: 6, name: 'Blue', parentId: 5 },
{ id: 7, name: 'Red', parentId: 5 },
{ id: 8, name: 'White', parentId: 5 }
];
Я создал две демонстрации с использованием наиболее часто используемых компонентов пользовательского интерфейса на angular
Используя угловой материал, вы можете проверить эту демонстрацию https://stackblitz.com/edit/moa-option-group-multi-select?file=src%2Fapp%2Fselect-optgroup-example.html
Используя primeng, вы также можете проверить эту демонстрацию https://stackblitz.com/edit/moa-primeng-multiselect-grouped
Вот очень легкая библиотека Angular для Multiselect-dropdwon. Он предоставляет широкий спектр функций, таких как группировка по, поиск, пользовательский поиск, виртуальная прокрутка и т. Д. Вы можете обратиться: https://cuppalabs.github.io/angular2-multiselect-dropdown/