select.component.ts 889 B

1234567891011121314151617181920212223242526272829
  1. import { Component } from '@angular/core';
  2. import { NativeInputComponent } from '../../_abstract/native-input.component';
  3. import { Router, ActivatedRoute } from '@angular/router';
  4. import { IOption, ILink } from '../../../models/field.model';
  5. @Component({
  6. selector: 'app-select',
  7. templateUrl: './select.component.html',
  8. styleUrls: ['./select.component.scss']
  9. })
  10. export class SelectComponent extends NativeInputComponent {
  11. exposeMetaInTemplate: string[] = ['options', 'link'];
  12. options: IOption[];
  13. link: ILink;
  14. constructor(private router: Router, private route: ActivatedRoute) {
  15. super();
  16. }
  17. navigate(field: HTMLSelectElement) {
  18. const base = Array.isArray(this.meta.link.route) ? this.meta.link.route : [this.meta.link.route];
  19. const destination = [...base, field.options[field.selectedIndex].value];
  20. this.router.navigate(destination, { relativeTo: this.route });
  21. }
  22. }