Skip to main content

Controle de estado pela URL

  • Controle de estado pela URL

  • Quando você utiliza [queryParams] em combinação com routerLink dentro de um elemento de navegação (como um <a> ou <button> que tenha um routerLink), o Angular irá adicionar os parâmetros fornecidos (neste caso, isOpen: true) à URL ao navegar para a rota especificada.

import { Component, OnInit, inject } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable, map } from 'rxjs';

@Component({
selector: 'nz-demo-modal-basic',
template: `
<button
nz-button
nzType='primary'
[routerLink]="[]"
[queryParams]="{isOpen: true}">
Abrir Modal
</button>

<nz-modal
[nzVisible]="isOpen$ | async"
nzTitle="Minha Modal"
(nzOnCancel)="closeModal()"
(nzOnOk)="closeModal()">
<ng-container *nzModalContent>
<p>Conteúdo do modal</p>
</ng-container>
</nz-modal>
`,
})
export class NzDemoModalBasicComponent implements OnInit {
isOpen$: Observable<boolean>;

private activatedRoute = inject(ActivatedRoute);
private router = inject(Router);

ngOnInit(): void {
this.isOpen$ = this.activatedRoute.queryParams.pipe(
map(({ isOpen }) => isOpen === 'true')
);
}

closeModal(): void {
this.router.navigate([], { queryParams: { isOpen: false } });
}
}