问题标签 [angular2-router]

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.

0 投票
1 回答
1754 浏览

angular - Angular2 Pending change guard,重新导航到当前路由时需要忽略特定的路由参数

我有一个待定的变更守卫,例如

我的问题是我还有一些与页面路由参数相关联的选项卡控件,因此当导航一个选项卡时,它会更新路由参数,反之亦然。它通过使用新参数导航到当前路由来更新参数,新参数不会重新加载组件,因为它仍然是当前路由。我的问题是我不希望 PendingChangesGuard 将这些路由更改视为停用,因为该组件仍在页面上的不同选项卡中。

理想情况下,我可以将一些参数传递给警卫,告诉它在重新导航到当前路线的情况下要忽略哪些路由参数,然后通过某种方式在警卫内检测是否唯一的变化是被忽略的参数之一. 我不确定如何检测这样的参数变化和想法?

0 投票
1 回答
1514 浏览

javascript - 如何在 Angular 4 中的依赖注入之前从服务器加载路由配置?

我的顶部菜单模块对路由和模块一无所知,它们将在从 api 加载之前用于菜单项。

现在我只是使用 routeConfig 作为全局变量,并在角度导入模块之前从纯 javascript 发出请求。如何正确执行?

0 投票
1 回答
291 浏览

angular - angular2 应用程序中所有路由的默认方法是什么?

我在 app.module.ts 中有以下路由配置,

当调用任何路由时,我想要一个方法来运行。例如,记录访问或预先请求某些数据。是否有任何默认的用户定义或内置方法可用于实现此目的?

0 投票
1 回答
1768 浏览

angular - Angular2:使用浏览器导航按钮时 AuthGuard 不起作用

我配置了一个简单的 AuthGuard,在“正常”浏览应用程序时工作得非常好(见下面的代码)。

现在想象一下:

用户导航到/content/secured-content,这需要身份验证 => 他被重定向到,/authentication/login因为checkLogin=> 他成功通过身份验证,因此被重定向回/content/secured-content=> 他单击“注销”按钮并成功注销(checkLogin现在将返回 false)。

现在重要的东西:当用户现在导航回安全内容页面(浏览器的“返回”按钮)时,既不canActivate也不canActivateChild也不canLoad被调用,路由器愉快地显示安全内容。受保护的内容本身依赖于在注销时被破坏的会话,因此它仍然是安全的,但我希望用户/authentication/login再次被重定向到该页面并期望该行为是诚实的。

你能告诉我我在推理中的错误在哪里,以及我的问题是否有适当的解决方案?

附件

路由配置片段:

auth-guard.service.ts:

ng--版本:

0 投票
4 回答
14033 浏览

angular - 如何刷新路由的解析数据

考虑以下路由配置:

用户数据由UserResolverroute 的任何子级检索/user/:uid。使用此数据,可以通过导航到 查看用户配置文件/user/:uid,然后通过导航到 进行编辑/user/:uid/edit。成功编辑后,预计会被重定向到用户更新的个人资料 ( /user/:uid)。

但是,视图和编辑页面都是已解析路由的子级,从一个导航到另一个时不会触发解析器。

因此,当从编辑组件导航回视图组件时,显示的数据仍然是旧的、未更新的数据。

是否有任何方法使解析的user数据无效以强制解析器再次从服务器获取它?或者有没有其他方法可以达到这种效果?

数据没有改变,app我们不应该重新加载它。

0 投票
2 回答
3578 浏览

angular - 带有参数未定义的Angular 2路由

我正在尝试在 Angular 2 中创建一个路由,该路由将我带到 json 文件的数据,具体取决于 id。例如我有 10001.json、10002.json、10003.json 等...

人们应该能够通过输入特定的 id 作为 url 来访问他们的患者文件,但到目前为止这还行不通。我实际上得到:

GET http://localhost:4200/assets/backend/patienten/undefined.json 404(未找到)

这是我的耐心组件:

这是路由,非常基本:

和服务:

0 投票
1 回答
1504 浏览

angular - Angular 2/4 中的并行(异步非阻塞)路由

该应用程序有一个包含 2 到 3 个类别按钮的页面。基本上,单击按钮将拉取每个类别中的项目列表,一旦 API 获取的数据可用,该页面就会显示。

我已经设计了带有解析 API 调用的 Angular 2 应用程序路由,当我们将应用程序功能迁移到 Angular 4 时,我不应该在页面加载时用微调器阻塞整个页面。

当用户点击一个类别时,如果响应延迟,他可能会点击另一个类别。当他导航回来时,他会期望将数据加载到先前单击的类别中,但 Angular 2/4 取消了路线,因为Navigation ID does not match with the current route

为了更好地理解,请参阅下面的 plnkr 链接。 http://embed.plnkr.co/UiyhZWCl63Tfq41WY48q/

同时点击星球和人物,观察只有一个板块加载,其他板块不加载数据。如果你检查你可以看到 NavigationCancel 事件被抛出

0 投票
0 回答
151 浏览

angular - 按钮需要点击两次才能设置正确的输入值 angular2

我试着做一个这样的搜索系统

假设我已经在输入标签中写了“搜索”,然后单击按钮。结果网址

如果我再次点击它会给出一个正确的网址

如果我在再次单击按钮之前更改输入值(搜索),例如我将其更改为“搜索”。结果是

并且需要再次点击才能获得

所以它被一个请求过期了。为什么会这样?我试图移动[routerLink]tospan标签,但它仍然是一样的。任何想法如何解决它?

谢谢 :)

0 投票
2 回答
630 浏览

angular - 带插值的 Angular 2 路由

我有类别下拉列表,基于类别我想更新菜单路由器链接。让我们考虑一下我选择了 Category1 然后 SubMenu1 路由器链接应该是 BASE/category1/submenu1。2 类路由器链接的相同方式应该是BASE/category2/submenu1

我尝试使用像BASE/{{category}}/submenu1这样的字符串插值来实现这一点,并尝试在下拉更改时从 .ts 设置类别。但它不起作用。

我们认为我们使用点击相应的子菜单并访问下拉值然后导航但是当我将鼠标悬停在子菜单上时它没有显示正确的链接这不好这就是为什么我想在类别下拉更改时更新子菜单链接。

提前致谢。

0 投票
1 回答
2019 浏览

angular - 在路由器事件中获取正确的 url

我有以下路线配置:

在一些模板中(如果重要,我们称之为xxx.component.html)我创建了一个按钮来在我的 404 路由中进行一些测试:

有了这个,我在路线中home/xxx,按下按钮后,它可以工作,我的意思是它进入 404 页面,但是,以下内容返回给我:

但我希望获得真正的先前路线 ( home/xxx),而不是我在按钮中设置的 URL。有没有办法做到这一点?

PS1:我尝试使用pairwise,但它只在调用 404 路由 2 次后才有效。

我的 404 组件如下所示: