fix(modal): preserve sequential dialogs

This commit is contained in:
ncoronel 2026-09-14 14:50:15 -03:00
parent b5fae81795
commit a7e1d8995f
2 changed files with 17 additions and 2 deletions

View File

@ -80,6 +80,21 @@ describe('ModalService', () => {
expect(ref.dismissReason()).toBeNull();
});
it('keeps a modal opened synchronously from an afterClosed subscriber', () => {
const firstRef = service.open(FirstTestModalComponent);
let secondRef: ModalRef | undefined;
firstRef.afterClosed$.subscribe(() => {
secondRef = service.open(SecondTestModalComponent);
});
firstRef.close();
expect(secondRef).toBeDefined();
expect(service.activeModal()?.ref).toBe(secondRef);
expect(service.activeModal()?.component).toBe(SecondTestModalComponent);
});
it('tracks dismiss reasons when closing programmatically', () => {
const ref = service.open(FirstTestModalComponent);
const closedSpy = vi.fn();

View File

@ -253,8 +253,8 @@ export class ModalService {
return;
}
ref.finalize(result);
this.activeModalState.set(null);
ref.finalize(result);
}
private dismiss<TResult>(
@ -265,8 +265,8 @@ export class ModalService {
return;
}
ref.finalize(undefined, reason);
this.activeModalState.set(null);
ref.finalize(undefined, reason);
}
private normalizeConfig<TData>(config: ModalConfig<TData>): NormalizedModalConfig<TData> {