angular / angular/components

bug(MatDialog): Immediate navigation to a route after MatDialog is closed, crashes the Angular App / browser

Đang mở
#28,066 5 bình luận 0 reaction 0 người được giao Xem trên GitHub
cannot reproduce
Ngôn ngữ chính
TypeScript
Star
25k
Fork
6.8k
Merge trung bình
1 ngày 8 giờ
Pull request đã merge (30 ngày)
91

Mô tả

### Is this a regression?

- [X] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

I am loading a dialog to ask user to verify email. On the dialog there's also a link which can be clicked in case user wants to update their email. As soon as the user click Update Email link and dialog is closed the browser tab crashes and Chrome display `Aw, Snap! error`

### Reproduction

I am loading a dialog to ask user to verify email. On the dialog there's also a link which can be clicked in case user wants to update their email.

```
import('./verify-email-dialog.component').then((c) => {
let config = new MatDialogConfig();
config.viewContainerRef = this.viewContainerRef;
config.disableClose = true;
config.panelClass = "header-pattern";

this.dialogRef = this.dialog.open(c.VerifyEmailDialog, config);
this.dialogRef.afterClosed().subscribe(result => {
if (result == 'updateEmail') {
this._router.navigate(['/account/manage/profile']);
return;
}

if (result === true) {
this.emailConfirmed = true;
}
});
});
```

Below is how I am closing dialog in case user click Update Email link in `VerifyEmailDialog`:

```
updateEmail() {
this.dialogRef.close('updateEmail');
}
```

As soon as the user click Update Email link and dialog is closed the browser tab crashes and Chrome display `Aw, Snap! error`

### Expected Behavior

it should work smoothly

### Actual Behavior

The browser crashes

### Environment

Angular CLI: 17.0.0-rc.4
Node: 18.18.2
Package Manager: npm 9.8.1
OS: win32 x64

Angular: 17.0.0-rc.3
... animations, cdk, common, compiler, compiler-cli, core, forms
... google-maps, material, platform-browser
... platform-browser-dynamic, platform-server, router
... service-worker

Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1700.0-rc.4
@angular-devkit/build-angular 17.0.0-rc.4
@angular-devkit/core 17.0.0-rc.4
@angular-devkit/schematics 17.0.0-rc.4
@angular/cli 17.0.0-rc.4
@angular/fire 16.0.0
@angular/pwa 17.0.0-rc.4
@schematics/angular 17.0.0-rc.4
rxjs 7.8.1
typescript 5.2.2
zone.js 0.14.0

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với luồng MatDialog được hiển thị trong bản tái hiện: dialog.open, afterClosed, dialogRef.close('updateEmail') và lệnh gọi router.navigate tiếp theo. Tái hiện chuỗi điều hướng ngay lập tức trong môi trường Angular 17; hoàn tất khi việc đóng hộp thoại và điều hướng đến /account/manage/profile không còn làm trình duyệt bị treo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, typescript
Lĩnh vực
frontend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.