Есть ли умный способ вернуться на последнюю страницу в Angular 2?
Что-то вроде
this._router.navigate(LASTPAGE);
Например, на странице C есть Go Backкнопка,
Страница A -> Страница C, щелкните ее, чтобы вернуться на страницу A.
Страница B -> Страница C, щелкните ее, чтобы вернуться на страницу B.
Есть ли у роутера эта история?
angular
angular2-routing
Хунбо Мяо
источник
источник
Location
состояний: «Примечание: лучше использовать сервис Router для запуска изменений маршрута. Используйте Location только в том случае, если вам нужно взаимодействовать или создавать нормализованные URL-адреса вне маршрутизации». Ответ Сассы, по- видимому, показывает, как этоRouter
сделать. ОднакоLocation
метод определенно более удобен. Кто-нибудь знает, почемуRouter
метод может быть более правильным, чемLocation
метод?В финальной версии Angular 2.x / 4.x - вот документы https://angular.io/api/common/Location
источник
<button backButton>BACK</button>
Вы можете поместить это в директиву, которая может быть присоединена к любому активному элементу:
Применение:
источник
Протестировано с Angular 5.2.9
Если вы используете якорь вместо кнопки вы должны сделать это пассивный канал с
href="javascript:void(0)"
сделать угловую Место работы.app.component.ts
app.component.html
источник
javascript:void(0)
. Нечто подобное ...@Directive({ selector: '[clickPreventDefault]' }) export class ClickPreventDefaultDirective { @HostListener("click", ["$event"]) onClick($event: Event) { $event.preventDefault(); } }
Вы можете реализовать
routerOnActivate()
метод в своем классе маршрута, он будет предоставлять информацию о предыдущем маршруте.Затем вы можете использовать
router.navigateByUrl()
и передавать данные, полученные изComponentInstruction
. Например:источник
routerOnActivate
Также работать для меня, когда мне нужно вернуться назад, как в файловой системе. PS @angular: "^ 5.0.0"
источник
Я сделал кнопку, которую можно использовать в любом месте моего приложения.
Создать этот компонент
Затем добавьте его в любой шаблон, когда вам нужна кнопка возврата.
Примечание: это использует Angular Material, если вы не используете эту библиотеку, удалите
mat-button
иcolor
.источник
После всех этих удивительных ответов, я надеюсь, что мой ответ найдет кого-то и поможет им. Я написал небольшой сервис для отслеживания истории маршрутов. Здесь это идет.
источник
То, как я это делал при переходе на другую страницу, добавляет параметр запроса, передавая текущее местоположение
Прочитайте этот параметр запроса в вашем компоненте
Если returnUrl присутствует, включите кнопку «Назад» и когда пользователь нажимает кнопку «Назад»
Это должно быть в состоянии перейти на предыдущую страницу. Вместо использования location.back я чувствую, что вышеописанный метод более безопасен, рассмотрим случай, когда пользователь напрямую попадает на вашу страницу, и если он нажимает кнопку возврата с помощью location.back, он перенаправляет пользователя на предыдущую страницу, которая не будет вашей веб-страницей.
источник
В RC4:
источник
источник
Location
сервис вместо этого. официальный APIНачиная с бета 18:
import {Location} from 'angular2/platform/common';
источник
в угловых 4 использования
preserveQueryParams
, например:При нажатии на ссылку вы перенаправлены
edit/10?page=1
, сохраняя параметрыссылка: https://angular.io/docs/ts/latest/guide/router.html#!#link-parameters-array
источник
Другое решение
window.history.back();
источник