问题标签 [angular-router-params]

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 回答
835 浏览

angular - 为可注入服务构造函数提供可选参数 - Angular2

有 AppComponent 和 SecurityService。

AppComponent 是一种将注入安全服务的组件。

我的问题是:如何为安全服务构造函数提供这个可选参数值?

0 投票
3 回答
1443 浏览

angular - 在路由器出口组件之外的组件中订阅路由参数

我有一个工具栏组件在路由器插座上方对齐。路由器插座具有表格和图表等各种组件。

能够订阅使用路由器插座显示的任何组件中的路由参数。

我想从不属于插座的工具栏组件访问路由参数。(捕获当前路径以在工具栏上显示路线名称)

主要成分:

工具栏组件:

表格组件:

0 投票
1 回答
4825 浏览

angular - 以角度 5 更新 routeparams

我有一个这样的路线dashboard/tour/2/269,这个组件代表旅游详细信息,并且在该组件内部有一些引用类似旅游的链接,所以当用户单击其中一个链接时,我想根据新参数重新加载组件,比如让我们说这个dashboard/tour/5/150,我尝试使用直接[routerLink],但它将新参数附加到旧参数上,这样dashboard/tour/2/269/tour/5/150路由变得无效。

请有任何建议。

0 投票
0 回答
267 浏览

angular - url参数错误时如何触发通配符路由?

在 Angular 6 中,我使用 observable 来管理基于 URL 参数获取详细记录,如下所示:

在 catchError 管道中,我只是导航到一个不存在的 URL,这会导致通配符路由触发并显示我的 PageNotFoundComponent。这似乎真的很令人费解,但我不明白如何让路由器显示该组件。有没有更好的办法?

这是我的设置演示: https ://stackblitz.com/edit/angular-router-not-found?file=src%2Fapp%2Fhero%2Fhero-detail.component.ts

0 投票
2 回答
1132 浏览

javascript - Angular 路由器在 IIS 服务器上部署时删除查询参数

我尝试使用 Angular 路由器,但在部署应用程序时遇到了一些麻烦。首先,这是我的版本:

我想有 2 条可能的路线:

  • mydomain.com/TestRouting/my-route
  • mydomain.com/TestRouting/my-route?route=whatever

这似乎很容易,对吧?

这是我在特定模块中的路由定义:

当然,我已经在 AppModule 中导入了这个模块,在 app.component.html 中添加了 router-outlet 标记

在我的 RouteComponent 中,我以这种方式获取查询参数:

因为,我已经在 IIS 服务器上部署了网站,所以我添加了这个 web.config 文件:

问题:在本地,它运行良好......(ng serve)在本地和生产模式下,它也运行良好(ng serve --prod)

我使用以下命令构建应用程序: ng build --base-href /TestRouting/ --prod

部署后,

mydomain.com/TestRouting/重定向到mydomain.com/TestRouting/my-route(预期行为) mydomain.com/TestRouting/my-route呈现组件(预期行为)但 mydomain.com/TestRouting/my-route?route=测试重定向到mydomain.com/TestRouting/my-route(好吧,那不行......)

有人有想法吗?非常感谢你的帮助。

0 投票
1 回答
121 浏览

angular - Angular 5在查询参数更改时显示浏览器警报

我有一个具有路由'/Item'的父组件项。

我有两个子组件名称Catalog组件和AddSize组件。

默认情况下,目录组件将使用 route 加载'/item?q=catalogue'。然后用户选择产品,然后路由将更改为'/item?q=add_size'并加载 AddSize 组件。

现在,如果浏览器单击浏览器后退按钮,则查询参数将从 更改'/item?q=add_size''/item?q=catalogue'

'/item?q=add_size'当用户单击路由浏览器警报中的后退按钮不起作用时,我遇到了问题。

保护服务和主机侦听器在这种情况下没有帮助,因为我在同一条路线上,并期望浏览器警报仅用于查询参数更改。

我们有任何替代解决方案吗?

0 投票
0 回答
1132 浏览

angular - Angular Router Resolve 功能不起作用

无法导航到 UserComponent 页面。如果我要从路由中删除 resolve 属性,那么它可以工作。但是当试图解析用户时它不起作用。任何帮助表示赞赏。

0 投票
1 回答
4019 浏览

angular - 无法从 App.Component 读取查询字符串参数

我想集中我在整个应用程序中读取特定查询字符串参数的位置/方式,所以我认为最好的地方是在 app.component.ts

然后,在 上ngOnInit(),我正在查看快照以及不同的订阅:

如您所见,我为paramsqueryParams和设置了订阅。queryParamMaprouter.events

在页面导航之间触发的唯一一个是router.events,但在那里,我必须手动解析 URL 以获取查询字符串。

不确定这是否对其有任何影响,但我正在覆盖路由重用策略,因此即使页面位于同一路由上,也会重新加载页面:

首次访问时的根页面输出:

解决方案

正如@Thomaz 和@Nathan 都指出的那样,我的问题是 App.Component 不在router-outlet.

此外,@Nathan 还指出:

不过,您可以访问路由器事件并在应用程序中的任何位置对其进行迭代,这就是您的 router.events.subscribe(...) 触发的原因。

然后我在我的路线上启用了跟踪:

并看到该ActivationEnd事件包括一个snapshot具有查询参数的事件。最后,我订阅路由器事件并处理我的查询字符串值(如果事件是ActivationEnd.

0 投票
0 回答
2204 浏览

angular - 在某些情况下,带有 navigationExtras 的 ionic 4 router.navigate 不会覆盖 queryParams

我有一个库存应用程序(设备和浏览器),用户可以在其中保留爱好零件的库存。我有一个显示零件类别(零件箱)的仪表板。如果单击该类别,您会看到该类别中的零件,然后如果您单击某个零件,您将转到零件页面。

TL:博士;在底部。

仪表板 -> 箱 -> 零件

我正在使用RouternavigationExtras改变它queryParams,我遇到了一些奇怪的问题。我将 queryParams 附加到 URL,以便用户可以在浏览器上添加书签或复制/粘贴 URL。

在仪表板页面上,当我点击一个垃圾箱时,我会得到垃圾箱的“类别”并将其作为一个queryParam垃圾箱页面发送:

这很好用,当我进入 bins 页面时,我会收到 queryParams 并快速调用我的服务以获取仅与该类别相关的数组中的部分:

这工作正常。然后在同一页面上,我将另一个带有部件 ID 的 queryParam 发送到部件页面,并且基本上对部件数组执行相同的操作:

Bins 页面 - 将 queryParams 发送到 Parts 页面

零件页面,从 bin (url) 接收参数

然后,从部件返回到 bins 页面:

并从垃圾箱返回仪表板(注意我在这里清除了 queryParams)

如果我只从仪表板页面开始,一切都会正常工作。我加载到适当的垃圾箱和零件就好了。

TL;DR:问题是当我直接在 bin 页面或部件页面上开始时。如果我直接转到一个 bin 页面(例如 /dashboard/bins?type=antenna),我可以正常导航到仪表板和正确的部件页面,但如果我导航到仪表板并选择另一个 bin,我只会得到即使 URL 中的查询参数已更新,初始 bin 中的部分也是如此。

如果我也直接进入零件页面也会发生这种情况,但另外,如果我返回具有不同 ID 的零件页面,我将看不到其他零件。

我可以看到它没有接收到我通过控制台日志发送的新参数。按顺序,我会看到:

如您所见,我正在发送 ID85x...并接收以前的 IDbHg...

此 queryParam 是否被缓存?如果是这样,我该如何销毁它?另外,为什么只有当我直接进入这些子页面时才会发生这种情况?

0 投票
3 回答
15234 浏览

angular - Angular Router.navigate 使用 queryParams 导航到子路由

Angular.Router.navigate 无法使用 queryParams 导航到子路由

А已经尝试过:

我的路线:

当我尝试导航到“桌面/搜索?q=文件夹”时,出现以下错误:

怎么了?有没有办法使用带有普通查询参数的子路由,比如