У меня есть следующий сценарий: я использую mat-dilog для отображения информации о карте * ngFor, в этой карте есть пара статических данных, таких как текст сообщения, заголовок и лицо, котороеопубликовал его, но у меня также есть динамические элементы, в данном случае кнопка «Мне нравится».Когда кто-то нажимает кнопку «Мне нравится» за пределами диалога (которая представляет собой расширенный вид публикации), кнопка «Мне нравится» становится красной и ее счетчик получает значение + 1, если человек нажимает на нее снова, он становится серым и имеет значение deоб этом - 1. Если кто-то откроет диалоговое окно, нажмет на кнопку и нажмет на кнопку закрытия, он работает нормально, но если кто-то нажимает на кнопку «Нравится» и затем нажимает на фоне или нажимает «esc», данные не отправляютсявернуться к родительскому компоненту.мой код выглядит следующим образом:
visualize(value: any) { //method that opens the dialog
if (value.link && !value.video_destaque)
window.open(value.link, "_blank");
else {
const publicationData = { //pass the data to dialog
id: value.id,
cabecalho: value.header,
corpo: value.body,
...
curtiu: value.curtiu,
classeFavorite: value.classeFavorite,
num_curtidas: value.num_curtidas,
};
const dialogRef = this.dialog.open(VisualizePublicationComponent, { //open dialog
maxHeight: '85vh',
width: '70vh',
panelClass: 'custom-dialog-container',
disableClose: true,
data: {
publicacao: publicationData
}
});
dialogRef.afterClosed().subscribe(result => {
this.post.curtiu = result.curtiu;
this.post.favoritou = result.favoritou;
this.post.num_curtidas = result.num_curtidas;
this.post.classeLike = result.classeLike;
this.post.classeFavorite = result.classeFavorite;
});
}
}
последняя часть "dialogRef.afterClosed ..." передает данные обратно в родительский компонент, но он работает только с кнопкой закрытия диалогового окна, кажется, что еслиВы щелкаете за пределами диалогового окна, оно думает, что вы хотите отменить и полностью забыть данные.
, поскольку это кнопка, похожая на, которую пользователь, вероятно, хочет прочитать, а затем лайкнуть и закрыть ее самым простым способом.(щелкнув за пределами поля).
Я думаю, что ответ на мою проблему связан со следующим кодом
dialogRef.backdropClick().subscribe(() => {
dialogRef.close();
})
, но я не знаю, кто яотсутствует.