Ionic4 - matInput в MatDialog не работает - PullRequest
0 голосов
/ 02 октября 2019

Добрый вечер!

У меня есть приложение Ionic 4 (5.7.0) Angular с использованием материала Angular (8.1.4), и у меня есть странный случай, до которого я не могу добраться.

У меня есть простой сервис диалогов, чтобы открывать общие диалоги подтверждения / приглашения (MatDialog s). Проблема с диалоговым окном подсказки;он не всегда работает должным образом.

export class DialogService {

  constructor(public dialog: MatDialog) { }

  public confirm(text: string): Observable<boolean> {
    const dialogRef = this.dialog.open(ConfirmDialogComponent, {
      data: text
    });

    return dialogRef.afterClosed();
  }

  public prompt(data: PromptDialogDto): Observable<string> {
    const dialogRef = this.dialog.open(PromptDialogComponent, {
      data
    });

    return dialogRef.afterClosed();
  }
}

Код для приглашения должен быть довольно несущественным, поскольку он просто содержит текстовое поле (matInput) и две кнопки (ОК / Отмена). Сам диалог возвращается согласно этому:

public onOkClick(): void {
  this.dialogRef.close(this.model || '');
}

public onCancelClick(): void {
  this.dialogRef.close();
}

В настоящее время у меня есть 3 ... «подпроцесса». Это просто модалы, использующие Ionics ModalController для выполнения некоторых действий перед возвратом. Все модалы запускаются с использованием одной и той же службы, и все модалы работают без ошибок.

Подпроцесс 1: Подсказка работает нормально. Подпроцесс 2 + 3: Подсказка появляется, кнопки ОК / Отмена работают, ввод текста не работает.

Невозможно установить фокус на ввод текста, он может даже не существовать на экранедля всей интерактивности, которую он поставляет.

Текущее использование приблизительно:

Main app
  --> Sub-process 3
    --> Sub-process 1
    --> Sub-process 2

Хотя есть варианты использования для чего-то простого:

Main app
  --> Sub-process 2

И все еще процесс2 имеет ту же проблему с диалоговым окном подсказок, которое устраняет одну из моих теорий, связанную с наличием слишком большого количества модальностей / диалоговых окон.

У кого-нибудь есть идеи по этому поводу? Даже где посмотреть, в частности, что может быть причиной этого? Я потратил достаточно времени, пытаясь приковать его к себе, но без особой удачи, так что, надеюсь, кто-то здесь сможет пролить немного света.

Спасибо.

Редактировать: TL; DR: The matInput поле ввода текста в моем диалоговом окне MatDialog не работает (не может фокусироваться, вводить текст или что-либо еще) в 2 из 3 случаев использования.

1 Ответ

0 голосов
/ 14 октября 2019

Заполнение ответа, чтобы не оставить вопрос висящим:

Ответа нет;Я сдался. Я переключил свой DialogService с открытия диалогового окна материала в пользу того, чтобы вместо него открывалось ионное оповещение.

Это работает, так что на данный момент это достаточно хорошо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...