import { ChangeDetectionStrategy, Component } from '@angular/core'; import { type MultiSelectChangeEventDetail, type PMultiSelectProps, PorscheDesignSystemModule, } from '@porsche-design-system/components-angular'; type Option = { value: string; label: string; description: string; tags: string[]; imgSrc: string }; const optionsData: Option[] = [ { value: '718', label: '718', description: 'Präziser Sportwagen mit Mittelmotor', tags: ['Benzin'], imgSrc: 'assets/718.png', }, { value: '911', label: '911', description: 'Ikonischer Sportwagen mit Heckmotor', tags: ['Benzin'], imgSrc: 'assets/911.png', }, { value: 'taycan', label: 'Taycan', description: 'Elektrischer Sportwagen', tags: ['Elektro'], imgSrc: 'assets/taycan.png', }, { value: 'macan', label: 'Macan', tags: ['Elektro'], description: 'Sportlicher Kompakt-SUV', imgSrc: 'assets/macan.png', }, { value: 'cayenne', label: 'Cayenne', tags: ['Hybrid', 'Benzin'], description: 'Vielseitiger SUV', imgSrc: 'assets/cayenne.png', }, { value: 'panamera', label: 'Panamera', tags: ['Hybrid', 'Benzin'], description: 'Luxuslimousine mit hohem Komfort', imgSrc: 'assets/panamera.png', }, ]; @Component({ selector: 'porsche-design-system-app', template: ` {{ selectedLabels }} @for (option of options; track option.value) {

{{ option.label }}

{{ option.description }}

@for (tag of option.tags; track tag) { {{ tag }} }
}
`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [PorscheDesignSystemModule], }) export class ExampleComponent { value: PMultiSelectProps['value'] = []; options: Option[] = optionsData; selectedOptions: Option[] = []; get selectedLabels(): string { return this.selectedOptions.map((option) => option.label).join(', '); } onChange(event: CustomEvent) { const { value } = event.detail; this.value = value; this.selectedOptions = this.options.filter((option) => (value as string[]).includes(option.value)); } }