- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 Angular 2 应用程序中发现了一个问题,我正在尝试解决这个问题。目前,当我单击整个应用程序中的链接时,我的路由按预期工作。这是一个如何在我的根路由文件中定义路由路径的示例:
{ path: 'home', component: HomeComponent, canActivate: [AuthGuard], data: {contentId: 'home-page'} },
{ path: 'contacts', component: ContactsComponent, canActivate: [AuthGuard], data: {contentId: 'contacts-page'} },
但是,如果在单击链接以路由到应用程序中的不同组件时,如果我还右键单击鼠标并选择“在新选项卡中打开链接”,那么当新选项卡打开时,会发生什么加载正确的组件后,页面将重定向到登录。同样,只有当我在 Chrome 中选择“在新标签页中打开链接”选项时才会发生这种情况。
我的登录组件的路由如下所示:
{ path: 'login', component: LoginComponent },
为了进一步澄清,我在根路由文件中的唯一重定向逻辑是在无法识别路由时处理到 home 组件的重定向:
{ path: '**', redirectTo: 'home' }
这是“联系人”链接的示例 - 这是上面列出的路由之一: http://localhost:4200/contacts
这是默认浏览器的问题吗?这是默认的 Angular 问题吗?只是想知道我是如何追踪到这个问题的。
顺便说一下,我认为这可能是 AuthGuard 问题,但即使我从“联系人”链接中删除 AuthGuard 保护,在新选项卡中打开时仍会重定向到登录组件。
这是我的登录组件的样子:
constructor(private router: Router,
private route: ActivatedRoute,
private authenticationService: AuthenticationService,
private alertService: AlertService,
private idle: Idle)
{}
ngOnInit()
{
// reset login status
this.authenticationService.logout();
// get return url from route parameters or default to '/'
this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';
}
login(response)
{
this.loading = true;
this.authenticationService.login(this.model.username, this.model.password)
.subscribe(
data =>
{
this.router.navigate(['/']);
this.reset();
},
error =>
{
this.alertService.error(error, response);
this.loading = false;
});
this.authenticationService.username = this.model.username;
}
reset()
{
this.idle.watch();
this.idleState = '';
this.timedOut = false;
}
}
此处调用的 authenticationService 的相关代码如下所示:
login(username: string, password: string)
{
const u = encodeURIComponent(username);
const p = encodeURIComponent(password);
return this.http.post(this.url + this.ver + '/' + 'staff/login/' + u + '/' + p + '?' + this.key, {})
.map((response: Response) =>
{
const user = response.json();
if (user && (response.status = 200))
{
sessionStorage.setItem('currentUser', JSON.stringify(user));
console.log('User ' + this.username + ' successfully authenticated with API');
// Track active user id
this._userId = user.data._id;
// Trigger login change
this.change.emit(this);
} else
{
console.log('User ' + this.username + ' not recognized by API');
}
});
}
isAuthenticated()
{
if (sessionStorage.getItem('currentUser'))
{
return true;
} else
{
return false;
}
}
logout()
{
// remove user from local storage to log user out
sessionStorage.removeItem('currentUser');
console.log('User successfully logged out');
// Reset active user
this._userId = undefined;
// Trigger event
this.change.emit(this);
}
最佳答案
评论中讨论的答案:在您的 AuthenticationService 中,将 sessionStorage 更改为 localStorage。 sessionStorage 仅在选项卡的生命周期内持续存在。
关于javascript - 在 Chrome 中选择 "Open Link in New Tab"选项时,应用程序路由重定向到 Angular 应用程序中的登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474911/
我在看 Tabs UI 的选项。默认行为是它们水平堆叠。有没有办法改变它? 我想堆叠Tabs垂直。它将节省大量的 UI“不动产”,尤其是在移动应用程序 UI 中。 最佳答案 尝试这个: Tabs ta
问题:在 Zsh 中使用 TAB 向后导航,类似于在 Firefox 中 Shift-TAB Shift-TAB 应该执行的操作示例 我在终端中运行以下代码 ls 我明白了 A B C D E F
有很多人想知道如何完成制表符。这不是这些问题之一。问题是如何将 tab 键分配给 tab 补全? alt-tab/esc-tab 很痛苦。在面板禁用模式选项卡完成工作,这让我暂时...但我仍然希望面板
所以我有一个带有 3 个屏幕的 TabNavigator。 import React from 'react'; import {TabNavigator,createBottomTabNavigat
我想触发一个事件,例如当我在文本框中按 Tab 键时显示警报消息。 $("input").blur(function (e) { if (e.which == 9) alert(
我将这段代码设置为创建一个选项卡式菜单,它显示为一个选项卡式菜单,但当我加载网站时,选项卡在单击时不会改变。在“检查元素”中它说 $( "#tabs").tabs();不是函数。我不知道下一步要解决这
表单中有多个输入字段的示例,因为有一些字段在此之前会自动填充,如果我按 Tab 键,那么它应该跳过该自动填充的输入字段并应转到空白输入字段 我尝试过,但是当我开始在空白输入中写入时会发生什么,它也会自
我想写一个小的 chrome 扩展程序,它应该从网页 A(当前网页)获取信息,将选项卡更新到网页 B,然后将代码注入(inject)网页 B。不幸的是,以下代码正在将网页更新到 B 但注入(injec
如果当前事件选项卡中的表单很脏,我试图阻止 mat-tab 的选项卡更改。 但是我找不到拦截选项卡更改事件的方法。 // Tab 0 Content // Tab
我已从 MacOS Mojave 上的默认终端切换到 iterm2 .我有一个关于从当前选项卡打开新选项卡的问题。 确实,我希望与上一个当前选项卡处于同一路径。 为此,我执行了经典程序,即转到 ite
我在我的网站的两页上有此代码,但在一页上该功能不起作用。 Firebug 向我显示“$(...).tabs 不是函数”。我不明白为什么,谁能告诉我什么是错的? 这是有效的: http://www.in
我需要可靠的方法来为 Windows 和 XP 创建 %tab% (包含一个制表符)。 SET TAB=" " 应该适用于 Windows 7(未测试)但不适用于 Win XP(已测试)。 这个 fo
我正在尝试使用 RMarkdown 制作静态网页。我想定义一个 UI,它有第一层选项卡,然后是第一层下面的选项卡。我已经在 RMarkdown: Tabbed and Untabbed heading
我正在尝试使用 RMarkdown 制作静态网页。我想定义一个 UI,它有第一层选项卡,然后是第一层下面的选项卡。我已经在 RMarkdown: Tabbed and Untabbed heading
我在使用 chrome.tabs.create 方法打开多个选项卡时遇到问题。我正在尝试使用 chrome.tabs.create 循环打开大约 9 个选项卡,但打开的选项卡数量仅限于 4 个。看起来
我正在使用 Material ui 的标签,并且能够对标签的指示器进行更改。但是,我正在尝试使用样式将每个选项卡的指示器宽度减小到某个固定宽度。但似乎指标以一些计算值定位在左侧,并且给它一个宽度不会使
我在 OS X 终端中使用 emacs 24.3,并且遇到了一些奇怪的事情。 在 markdown-mode.el 中,tab 键通过 (define-key map (kbd "") 'markdo
在 Chrome 开发者工具上 Uncaught (in promise) Error: There is no clipping info for given tab at E._handleRes
在vim中,我想将:tabnew缩短为:tn,将:tabp缩短为:th,将:tabn缩短为:tl在我的.vimrc中。知道我将如何重新映射这样的命令吗? 最佳答案 使用cabbrev: ca tn t
我读过几个主题,讨论 IE 中的地址栏在使用 TAB 时基本上是第一个获得焦点的主题(MSDN 自己的文档讨论了这一点)。 然而,我也见过一些情况,但情况并不总是如此...... 我有一个母版页,内容
我是一名优秀的程序员,十分优秀!