How to pop up a modal from click in dropdown list option

ぐ巨炮叔叔 提交于 2020-05-28 09:34:28

问题


Good day developers , im working in this app with angular , and now im trying to once one of the options get clicked , to show a modal tag . Basically what i did was create a paralell template equal to the item selected on the dropdown , and over this template using the a tag i set all the logic to show the modal, but guess isn't user friendly cause of couple extra clicks.Trying to set the a tag inside the options also wasn't viable cause the my dropdown didn't work.Here a mock about what i did:

HTML tag

      <select [hidden]="!state" name="optionsInc" required [(ngModel)]="optionsInc" (change)="subItemSelected($event)">
        <option value="select" [ngValue]="null" [disabled]="true">Select Income</option>
        <option *ngFor="let item of allKeysIncomings" label="{{item}}" value="{{item}}"></option>
      </select>====>DROPDOWN LIST LOGIC


    <p [hidden]="!state"> <a *ngIf="incomeSelected"
      href="#"
      class="btn btn-primary btn-block"
      data-toggle="modal"
      data-target="#editItem"
    >{{incomeSelected}}</a>
    </p>====>PARALELL REFERENCE TO POP THE MODAL UP

    <div class="modal fade" id='editItem'>======>MODAL 
      SOME TAGS AND CODE
    </div>

then on my component i did this :

imports...

@Component({
  selector: 'app-user-sheet-balance',
  templateUrl: './user-sheet-balance.component.html',
  styleUrls: ['./user-sheet-balance.component.css'],
})
export class UserSheetBalanceComponent implements OnInit {

allKeysIncomings: any;==>ITERABLE
incomeSelected: string;

constructor(some code) {}

ngOnInit(): void {some code}

  async subItemSelected(event) {
    SOME CODE
      return (
        await (this.incomeSelected = event.target.value),
     );
  }

All this process does the task on activate the modal once i click the tag a, but instead of creating that paralell reference to the dropdown, im wondering if is possible to do it straight from the dropdown in fact. I have been watching some similar issues on the comunity like :Open a Modal Using an Option from a Dropdown - Angular 2 + ngx but doesn't work on my code specifications. Any updated idea about this ?.Thanks in advance!!!!!!


回答1:


if you have Component with dialog layout in ModalComponent it should work as follow

    import { Injectable } from '@angular/core';
    import { MatDialog, MatDialogRef } from '@angular/material/dialog';
    import { ModalComponent } from './modal/modal.component';

    @Injectable({
      providedIn: 'root'
    })
    export class TestDialogService {

      dialogRef: MatDialogRef<ModalComponent, any>;

      constructor(public dialog: MatDialog) { }

      open() {
        if(this.dialogRef) {
          this.dialogRef.close();
        }
        this.dialogRef = this.dialog.open(ModalComponent, {
          panelClass: 'app-dialog'
        });
      }

      close() {
        if(this.dialogRef) {
          this.dialogRef.close();
        }
      }
    }

    // html
    <mat-form-field>
      <mat-label>Favorite car</mat-label>
      <select name="optionsInc"
        matNativeControl 
        [(ngModel)]="optionsInc" 
        (ngModelChange)="onModelChange()">

        <option value="select" [value]="null" [disabled]="true">Select Income</option>
        <option *ngFor="let item of allKeysIncomings" [label]="item.viewValue" 
          [value]="item.value"></option>
      </select>
    </mat-form-field>

    // ts
    @Component({
      selector: 'app-root',
      templateUrl: "./app.component.html",
      styleUrls: ["./app.component.scss"]
    })
    export class AppComponent {
      state = false;
      optionsInc = null;
      allKeysIncomings = [
        {value: 'volvo', viewValue: 'Volvo'},
        {value: 'saab', viewValue: 'Saab'},
        {value: 'mercedes', viewValue: 'Mercedes'}
      ];

      constructor(
        public testDialogService: TestDialogService) {
      }

      onModelChange() {
        this.testDialogService.open();
      }
    }

example



来源:https://stackoverflow.com/questions/62002285/how-to-pop-up-a-modal-from-click-in-dropdown-list-option

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!