import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; import { DatasetService } from '../../../../core/services/dataset/dataset.service'; @Component({ selector: 'app-available-profiles-component', templateUrl: 'available-profiles.component.html', }) export class AvailableProfilesComponent extends BaseComponent implements OnInit { public formGroup: FormGroup; public profiles: DatasetProfileModel[] = []; public selectedProfiles: DatasetProfileModel[] = []; public selectedOptions: any; constructor( private datasetService: DatasetService, private dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any ) { super(); } ngOnInit(): void { this.formGroup = this.data['profiles']; this.datasetService.getDatasetProfiles() .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.profiles = data; }); } addProfiles(profiles) { profiles.selectedOptions.selected.forEach(element => { const selectedElement = { id: element.value.id, label: element.value.label, description: element.value.description } this.selectedProfiles.push(selectedElement); }); this.formGroup.setValue(this.selectedProfiles); this.dialogRef.close(); } isOptionSelected(profile: any) { return this.formGroup.value.map(x => x.id).indexOf(profile.id) !== -1; } }