Angular-通过路由打开模式时使用带有复杂URL的导航

问题描述 投票:-1回答:1

我正在使用一个现有应用程序,该应用程序具有多个页面,其中包含分页/排序和表格。模态是通过路由打开的,这会导致如下网址:http://www.example.com/table;sort=name,desc/new

有什么办法请问this.router.navigate()生成搜索网址吗?我需要使用this.router.navigate,因为链接是相对于URL的。所以routerLink在这里不起作用。

问题是默认情况下this.router.navigate将对导致路由失败的URL进行编码。

更新:好吧,我找到了答案。一个可以做this.router.navigate(this.router.url,{sort:'name,desc'},'new'],{relativeTo:this.route});

不得不在基本URL中收集参数以再次传递它们很烦人。

angular routing modal-dialog
1个回答
0
投票

我认为这里的选择取决于您是否希望能够直接使用URL来引用模式。

如果需要,那么我建议将您的网址改成类似的内容

 http://www.yoursite.com/table?sort=name,desc 

[当您想将它们引用到模式时,您也可以将参数传递给另一个URL,如下所示:

http://www.yoursite.com/table/modal?sort=name,desc 

如果想将参数返回到基本/ table页面,可以用两种方法解决参数保存问题。如果先前的URL是模式链接,则可以侦听路由器的更改并复制参数,也可以将html中的routerLink更改为表格页面,然后将当前参数放在此处。

如果不需要直接引用模式,最好将信息存储在服务中或将其保存在组件本身中,因为模式可以直接加载在组件顶部。

© www.soinside.com 2019 - 2024. All rights reserved.