Предотвращение закрытия мат-меню при фокусировке ввода формы

#javascript #angular #angular-material

Вопрос:

У меня есть форма обратной связи внутри мат-меню, которая выглядит следующим образом:

 <mat-menu #menu="matMenu" xPosition="before" class="filter-menu" (click)="$event.stopPropagation();">
      <div>
          <form [formGroup]="feedbackForm" (submit)="submitFeedback()">
              <div class="form__wrapper mt-4">
                  <div class="flex">
                         <div>
                            <label for="email" class="form__label">Email</label>
                             <input type="email" name="email" disabled 
placeholder="{{email}}" id="">
                          </div>
                  </div>
                  <div>
                       <label for="feedback" class="form__label">Feedback</label>
                         <textarea placeholder="Your feedback" formControlName="feedback" rows="4" name="feedback"></textarea>
                  </div>
                    <button class="btn" type="submit">Send Message</button>
               </div>
           </form>
    </div>
</mat-menu>
 

Я добавил $event.stopPropagation(); , чтобы меню не закрывалось, когда я нажимаю внутри него, но оно все равно закрывается, когда я фокусируюсь на текстовой области. Любая помощь в том, что может быть причиной этого?

Ответ №1:

Ваше событие.stopPropagation() должно быть в функции, запускаемой событием фокусировки на поле ввода, на котором фокусируется.

Вам нужно пройти мероприятие, когда (focus)="myFunc($event) , а затем в myFunc(event) { event.stopPropagation() } .

Это должно сработать 🙂

Комментарии:

1. Оно делает. Спасибо!

2. другой способ-поместить событие.stopPropagation во внутренний div: <mat-menu #menu="matMenu"...><div (click)="$event.stopPropagation();">...</div></mat-menu>