Existe uma maneira inteligente de voltar a última página no Angular 2?
Algo como
this._router.navigate(LASTPAGE);
Por exemplo, a página C tem um Go Backbotão,
Página A -> Página C, clique nela, retorne à página A.
Página B -> Página C, clique nela, retorne à página B.
O roteador possui essas informações de histórico?
angular
angular2-routing
Hongbo Miao
fonte
fonte
Location
estados: "Nota: é melhor usar o serviço Router para acionar alterações de rota. Use Location apenas se precisar interagir ou criar URLs normalizados fora do roteamento". A resposta de @ Sasxa aparentemente mostra uma maneira de usarRouter
isso. No entanto, oLocation
método definitivamente é mais conveniente. Alguém sabe por que oRouter
método pode ser mais correto que oLocation
método?Na versão final do Angular 2.x / 4.x - veja os documentos https://angular.io/api/common/Location
fonte
<button backButton>BACK</button>
Você pode colocar isso em uma diretiva, que pode ser anexada a qualquer elemento clicável:
Uso:
fonte
Testado com Angular 5.2.9
Se você usar uma âncora em vez de um botão, você deve torná-lo uma ligação passiva com
href="javascript:void(0)"
a tornar o trabalho Localização Angular.app.component.ts
app.component.html
fonte
javascript:void(0)
. Algo como ...@Directive({ selector: '[clickPreventDefault]' }) export class ClickPreventDefaultDirective { @HostListener("click", ["$event"]) onClick($event: Event) { $event.preventDefault(); } }
Você pode implementar o
routerOnActivate()
método na sua classe de rota, ela fornecerá informações sobre a rota anterior.Então você pode usar
router.navigateByUrl()
e transmitir dados gerados a partir deComponentInstruction
. Por exemplo:fonte
routerOnActivate
Também funciona para mim quando preciso voltar como no sistema de arquivos. PS @ retangular: "^ 5.0.0"
fonte
Eu criei um botão para reutilizar em qualquer lugar do meu aplicativo.
Crie este componente
Em seguida, adicione-o a qualquer modelo quando precisar de um botão Voltar.
Nota: Isso está usando material angular, se você não estiver usando essa biblioteca, remova o
mat-button
ecolor
.fonte
Depois de todas essas respostas impressionantes, espero que minha resposta encontre alguém e os ajude. Escrevi um pequeno serviço para acompanhar o histórico de rotas. Aqui vai.
fonte
A maneira como fiz isso enquanto navegava para uma página diferente adiciona um parâmetro de consulta passando a localização atual
Leia este parâmetro de consulta no seu componente
Se returnUrl estiver presente, ative o botão voltar e quando o usuário clicar no botão voltar
Isso deve ser capaz de navegar para a página anterior. Em vez de usar location.back, sinto que o método acima é mais seguro, considere o caso em que o usuário acessa diretamente sua página e se ele pressionar o botão voltar com location.back, ele redirecionará o usuário para a página anterior, que não será sua página da web.
fonte
No RC4:
fonte
fonte
Location
serviço. API oficialDesde o beta 18:
import {Location} from 'angular2/platform/common';
fonte
no uso angular 4
preserveQueryParams
, ex:Ao clicar no link, você é redirecionado
edit/10?page=1
, preservando os parâmetrosref: https://angular.io/docs/ts/latest/guide/router.html#!#link-parameters-array
fonte
Outra solução
window.history.back();
fonte