问题标签 [angular-router-guards]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 在防护 angular5 中的 setTimeOut 函数中返回布尔值
我想用 canActive 方法创建一个路由保护并在几秒钟后响应。我用这个:
所以这个函数在 2 秒后返回一个 false。我希望能正常工作,但 angular 没有编译代码并返回以下错误:
它说 canActive 应该返回一个布尔值,而不是在 setTimeOut 中,但我的守卫是异步守卫,延迟响应是可以的。
angular - 以编程方式导航时出现角度路由问题,旧组件保留在 DOM 中而不破坏
重复问题: 是的。这里是。
由于之前已经提出过上述问题,但由于问题没有正确说明问题,因此没有找到任何有用的答案。
场景/问题: 我正在使用 Angular4,我的项目基于延迟加载。我有一个登录页面,其中有一个名为“Register”的按钮,当我单击我的注册按钮时,它导航到注册模块并运行其组件。我面临的问题是当我单击注册按钮时,我的注册模块正确加载但我的登录模块没有从 DOM 中删除并且存在于同一页面上。
下面是我的文件夹结构:
下面是我的 app-routing.module.ts:
下面是我的 login.component.ts:
下面是我的 login.component.html:
下面是我的 login.router.ts
下面是我的 app.component.html
下面是我的 app.component.ts
我希望我提供有关我的问题的简要信息。现在我想要的是当我点击注册按钮并导航到注册模块时,只有注册模块会打开并从 DOM 中删除所有以前的模块。
javascript - 单击注销时如何在Angular中调用canDeactivate
在我当前的注销通话中,我有这样的事情:
问题是,当执行注销并调用重定向到登录时,会在该路由上调用 canDeactivate 守卫,但用户已经注销。
那么如何在执行注销之前调用 canDeactivate 守卫并在用户不想离开时取消注销操作。
谢谢。
angular - Angular 路由在前一个页面之上“打开”新页面,并在每个路由操作中保持堆叠
所以我有一个 angular4 应用程序使用import {RouterModule, Routes } from '@angular/router'
我的路线配置是这样设置的:
在我的导航栏 html 中使用
在我的页面之间路由。问题是,每次我点击导航栏中的链接时,都会出现新页面,但它在前一个页面的顶部,我的意思是如果我向下滚动我可以看到上一页(但导航栏是不重复)
不确定这是否相关,但我<router-outlet>
在我的 app-component.html中使用
angular - 升级到 Angular 5 后 canActivate 不起作用
我正在将我的项目升级到 Angular 5,但我无法理解如何激活不再起作用:
我的路由和模块文件:
和我在 myModule 中的路由文件:
问题是从未调用过 LoggedInGuard,我不明白我错过了什么
我添加了我的 loggedInGuard 函数,因为@Rowel de Guzman 评论
} }
angular - CanActivateGuard 并将数据传递到 Guard
我有一个 Angular 4 应用程序,并且已经实现了一个保护来处理身份验证。我们有不同的模块,它们使用工厂来创建我们称之为 ThemeService 的东西。每个模块都是具有自己的样式和安全性的自包含应用程序。每个模块都告诉 ThemeService 用户必须拥有什么角色才能访问,并且守卫工作得很好。
这是守门员:
我现在有一个模块,它有一些需要使用不同角色保护的路由。我的问题是如何将必须为每个路由检查的角色传递给 AuthenticationGuard。我不想为我们想要检查的每个角色创建一个不同的后卫。
贝娄是我的路线配置的片段
angular - CanActivate 带有服务调用的警卫
我有一个要求,我需要根据角色激活路由。请在下面找到代码:
我已经配置了我的路线,如下所示:
但是即使我的守卫恢复真实,我仍然无法路由到user
路由。如果我在这里做错了什么,请告诉我。我已经探索了很多关于 SO 的帖子来处理警卫中的异步调用,但仍然没有成功
javascript - 为什么在受保护页面上刷新会将我重定向到 root,而不是我指定的重定向?
我正在使用 Angular 2 框架。我已经设置了我的应用程序路由模块,以便我立即被定向到登录页面(使用路径匹配'full'和redirectTo:'signOn'。我的应用程序路由模块中的所有其他路由都有canActivate: CanActivateViaAuthGuard
。这只允许用户导航如果他们已登录,则转到其他链接。这可以正常工作,并且一旦登录,功能就可以了。用户甚至可以退出并返回主页。
但是,如果用户登录然后刷新页面,这在技术上将布尔值(允许他们导航)设置回 false 并尝试拉出根页面localhost:4020
,它是空的。如果用户刷新页面,我需要它localhost:4020/signOn
像最初那样路由。
有什么建议吗?
我的路径变量中的路由示例:
angular - Angular 4子路由始终包含来自父级的参数
我有一个 Angular 4 webapp,它目前托管一个多租户站点。
一个示例网址将类似于
我已按如下方式设置我的路线,以让自己成为“租户守卫”,确保在尝试渲染路线之前始终拥有此属性
我想要确保我的路由器链接始终包含租户。
目前,我的导航组件看起来像
但是,单击“受保护”实际上会将我发送到
如何在我的子组件上设置任何链接以包含父路由中的租户参数?
我考虑的一种方法是传递是ActivatedRoute
从我的子组件周围传递服务并在组件内构造 url。
不过,这似乎有点低效,有没有另一种方法可以做到这一点而不在每个组件中都包含路由器?
angular - Angular - 我无法让 canDeactivate 与我的模式一起使用路线
设想:
技术:使用 typescript 和 webpack 的 Angular 版本 5 应用程序。
我做了一个canDeactivate 守卫来查看用户是否想离开当前路线。
当用户尝试导航到另一条路线时,需要出现我展示的自定义模式。
然后用户在模式中单击“是”(例如,我想离开)。
问题:
我的警卫服务很好,但模式方法“canDeactivate”没有受到打击。因此模态不会打开。
我已将自定义模式组件添加到 html。
我已经将警卫和模态添加到应用程序模块中。
这些是我下面的文件
停用GuardService:
我的自定义模式:
设置了 canDeactivate 的路由: