问题标签 [angular-activatedroute]

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 投票
2 回答
809 浏览

angular - ActivatedRoute 显示为空

试图从不同组件中的路由器获取数据。但它的显示{}价值。

应用程序路由.module.ts

页面路由.module.ts

header.component.ts

甚至找到类似的问题,甚至尝试更新代码但仍然无法正常工作 Angular ActivatedRoute 数据返回一个空对象

任何想法,如何从路由器获取数据值。TIA

0 投票
1 回答
57 浏览

typescript - Angular 7:ActivateRoute 捕获 paramId 获取空值

我想订阅我的praramID页面加载时间,但我尝试console.log()它正在返回null。我正在使用 Angular 7。

这是我的打字稿:

这是我的路线:

我不确定我的代码是否正确,但是null当我尝试时它会返回,console.log() 你们能帮我弄清楚吗?

它应该在控制台中返回 en。

0 投票
1 回答
102 浏览

angular - 检测哪些是用户的原始位置

假设我们有一个应用程序,其路由器配置如下:

每个供应可以在内部有一个或多个标识符。在Supplycomponent中,我们有一个分页器,它在卡片上一个一个地显示每个供应 ID,每次用户单击下一步按钮时都会更改 URL。例子:

如果我们推送Supply1,我们会转到'/supply/id_1'。如果我们推送Supply2,我们将转到'/supply/id_2',我们可以使用分页器在 id 之间进行更改。

我们希望通过两种方式访问​​此 SupplyComponent:从位置“/supply”和从另一个应用程序。

有什么问题?如果我们想从另一个应用程序转到“/supply/id_3”,我们需要使用ActivatedRoute,获取该 id 并从 API 检索信息。但是我们只显示id_3的信息,而不是Supply2的所有信息。

有什么方法可以“检测”用户是来自“/supply”还是来自另一个应用程序?我一直在寻找类似的问题,但没有一个适合我的需要。

提前致谢

0 投票
2 回答
4219 浏览

angular - ActivatedRoute 不会在路由更改时更新子路由数据

我想从父组件获取子路由数据('layout')ActivatedRoute。我已经尝试了以下示例,并且我能够获得我正在寻找的数据,但只能获得一次。在子路线更改期间,我看不到更新的“布局”值。

路线

布局1组件

我希望每次更改路线时都使用更新的“布局”值打印 console.log。

请帮我解决这个问题。

0 投票
1 回答
519 浏览

angular - 角度导航和验证 - 带参数的路线

在我的项目中,我有一些接受参数的路线。

我的几条路线(兄弟姐妹):

我有几件事我不知道该怎么做

  1. 在我编辑工厂(例如 url:'factories/3/factor/edit')后,我想导航回 'factories' url。

我尝试了以下方法:

所有导致重定向到主页/组件(url:“”)

我无法使用硬路径 (this.router.navigate(['factories']);) 导航,因为我有另一个能够编辑工厂的路径,并且我还想返回到父路径(从'details/:index/factory/edit' 返回到'details')

  1. 我想验证“索引”参数 - 检查我是否有一个与数字匹配的工厂,并验证它是否是一个数字。如果验证失败重定向到“工厂”/“详细信息”路径。

我试图通过守卫来做到这一点,但是当用户刷新页面时,我的工厂数据正在重置(我使用 NgRX 状态来保存数据)。我尝试使用解析器,但解析器仅在警卫之后调用,我无法从警卫导航,或者我最终陷入无限循环

任何想法如何实施?

========================

编辑

关于第一个问题,我找到了解决方案:

const currUrl = this.route.snapshot['_routerState'].url.substring(1).split("/"); this.router.navigate([currUrl[0]]);

currUrl 将有一个包含完整 url 的数组 - 数组的第一个值是父路径

还在想第二个问题

0 投票
5 回答
4281 浏览

angular - 使用 Angular 获取路由参数的最佳方法

在当前路由(使用 ActivatedRoute 或 Router)中获取我的 id 值的最佳方法是什么?并解释原因:)

n°1

n°2

0 投票
1 回答
68 浏览

angular - 服务的构造函数中未定义活动路由

有一个服务trackUrlService被导入到CoreModule

有一个组件DummyComponent

问题:

this.route.params为什么从服务的构造函数输出调用undefined

this.route.params但是从组件的工作中调用ngOnInit()并输出正确的值。

0 投票
3 回答
385 浏览

angular - Angular 6 QueryParams OnInit 不可用?

好的,所以我正在创建一个简单的页面,我希望用户通过 URL 传递一堆参数。我一直在使用的非常基本的例子是http://localhost:4200/?client_id=test

我正在遵循我可以在互联网上找到的所有程序,但由于某种原因,参数在 OnInit 上不可用,并且只能通过订阅获得?

这是打印的

好像Angular直到页面加载后才识别查询字符串参数?我怎样才能解决这个问题?

编辑:

我也尝试过使用 params.get() - 结果相同

印刷

所以订阅的第一次激活值为空 - 然后值更改为测试并更新。我试图避免第一个“空”值。

0 投票
0 回答
132 浏览

angular - Angular 将 ActivatedRoute 参数注入到服务中

我正在尝试将字符串参数从组件传递给服务构造函数。在静态值的情况下很容易:

并为我服务:

我在控制台中得到了我的“任何东西”。但我真正想通过的是真正的董事会ID。在组件中,我使用 activateRoute 将板 id 获取到局部变量。

如何将此 id 传递给服务?

@edit我可以通过调用以板ID作为参数的服务方法来实现我的目标,然后初始化服务数据。但我认为这不是一个好方法吗?

0 投票
0 回答
97 浏览

angular - 角度 8 获取 ActivatedRoute paramMap 包括页面加载时的 queryParams

我的实际组件和应用程序要复杂一些。但是,我只是想看看我是否缺少一些简单的东西。我无法从 ActivatedRoute 获取正确的 paramMap。当 url 还包含 queryParams 时会发生这种情况。

示例网址: www.example.org/event/d162f2c2-5bbe-414c-9961-60ab6f489dc5?blah=foo

下面的控制台日志将 eventId 打印为d162f2c2-5bbe-414c-9961-60ab6f489dc5?blah=foo

只有当我从应用程序外部的链接(即电子邮件或其他网站)打开 URL 时,才会发生这种情况。或者,如果我将 url 复制并粘贴到新的浏览器窗口中。刷新页面使 eventId 在没有 queryParams 的情况下正确记录。但是,为什么它不适用于从外部链接进行初始页面加载?

该路线是一个延迟加载的模块。主路由有一个如下所示的路由:

然后在 videos.module 内部是定义 eventId 的路由。VideosDetailComponent 是我试图获取 eventId 的地方:

这个太诡异了 如果应用程序已经加载并且我复制粘贴 url 并点击返回以重新加载页面,则 eventId 正确记录。仅当您在未加载应用程序的情况下打开新的浏览器窗口,然后复制粘贴 url。eventId 未正确记录。

OMG,我想我已经想通了。在我的 AuthGuard 中,我使用了一些逻辑router.navigate([redirectUrl]);但是由于 url 包含 queryParams,当我切换到它时router.navigateByUrl(redirectUrl),它可以正常工作。