如何使用angular router(angular 6)返回到特定页面?

如何使用angular router(angular 6)返回到特定页面?,angular,angular6,Angular,Angular6,在我的应用程序中,我有一个主页和一个完成页面。在这些页面之间,根据用户交互的不同,可以有2-4个屏幕。一旦用户到达最后一页并完成它,我希望应用程序总是返回主页 在我的应用程序中的其他例子中,我使用window.history.go(-1)返回一个页面,但由于此流可能是可变的,我正在寻找返回主页的最佳方式,不知道它是返回历史中的2页还是4页 使用angular 6处理这种情况的最佳方法是什么?您可以在组件中使用路由器的navigateByUrl方法,如下所示: import {Router} fr

在我的应用程序中,我有一个主页和一个完成页面。在这些页面之间,根据用户交互的不同,可以有2-4个屏幕。一旦用户到达最后一页并完成它,我希望应用程序总是返回主页

在我的应用程序中的其他例子中,我使用window.history.go(-1)返回一个页面,但由于此流可能是可变的,我正在寻找返回主页的最佳方式,不知道它是返回历史中的2页还是4页


使用angular 6处理这种情况的最佳方法是什么?

您可以在组件中使用路由器的
navigateByUrl
方法,如下所示:

import {Router} from '@angular/router';

constructor(private router: Router) {}

navigateToHomepage() {
  this.router.navigateByUrl('/homepage');
}

关于返回一个或多个页面,您可以做的是在页面上的某个位置添加“返回”按钮,该按钮将以编程方式将用户从位置历史记录中一次返回一个页面。Angular为以下类型的情况提供
位置
服务:

import {Location} from '@angular/common';

constructor(private location: Location) {}

goBack() {
  this.location.back();
}

位置服务文档:

您可以在您的组件中使用路由器的
navigateByUrl
方法,如下所示:

import {Router} from '@angular/router';

constructor(private router: Router) {}

navigateToHomepage() {
  this.router.navigateByUrl('/homepage');
}

关于返回一个或多个页面,您可以做的是在页面上的某个位置添加“返回”按钮,该按钮将以编程方式将用户从位置历史记录中一次返回一个页面。Angular为以下类型的情况提供
位置
服务:

import {Location} from '@angular/common';

constructor(private location: Location) {}

goBack() {
  this.location.back();
}

位置服务文档:

在非主页的所有路由上使用,并在服务中存储值。完成最后一页时,将服务中的值设置为已完成最后一个阶段。让AuthGuard检查服务中的该值,如果该值已标记为已完成,则在CanActivate函数中返回false。

在非主页的所有路由上使用,并在服务中存储一个值。完成最后一页时,将服务中的值设置为已完成最后一个阶段。让AuthGuard检查服务中的该值,如果该值已标记为已完成,则在CanActivate函数中返回false。

如果我在最后一页中使用该值,将正确返回主页。但是如果我使用浏览器按钮返回,它会不会直接返回到完整的页面?看起来它会允许我返回。但是,有没有一种方法可以审视历史并加以分析呢?然后确定有多少条路线可以从那里返回?如果这是不可能的,我可能会在路由之外做一些跟踪,但我认为可能有一种简单的方法来查看历史/路由,并据此做出决策。您无法访问历史对象的内容。从MDN web docs for
窗口。历史记录
出于安全原因,历史记录对象不允许非特权代码访问会话历史记录中其他页面的URL,但允许它导航会话历史记录。
如果我在最后一页上使用它,将正确返回主页。但是如果我使用浏览器按钮返回,它会不会直接返回到完整的页面?看起来它会允许我返回。但是,有没有一种方法可以审视历史并加以分析呢?然后确定有多少条路线可以从那里返回?如果这是不可能的,我可能会在路由之外做一些跟踪,但我认为可能有一种简单的方法来查看历史/路由,并据此做出决策。您无法访问历史对象的内容。从
窗口的MDN web文档。历史记录
出于安全原因,历史记录对象不允许非特权代码访问会话历史记录中其他页面的URL,但允许它浏览会话历史记录。