Добрый вечер!
У меня есть приложение 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 случаев использования.