如何使用查询字符串而不是';'

19 浏览
0 Comments

如何使用查询字符串而不是';'

我一直在为使用Angular2 beta 15的开发人员编写一个内部工具,后端采用C# WebApi。\n我会随着新版本的发布而升级Angular2的版本。\n我从一开始就使用了路由,但现在我需要添加可选参数。通常,这是通过查询字符串来实现的。\n然而,Angular2将可选参数放在查询字符串之前,如下所示:\nhttp://www.example.com;a=b;c=4\n\n最初,我觉得这样也可以,尽管这不是我习惯的方式。然而,我现在遇到了一些需要具有“可能危险的请求路径值”的情况,比如“*”(用于保存带有预填充正则表达式搜索字段的链接)。\n我可以想到几种解决办法,包括:\n

    \n

  1. 用不同的符号替代* - 这意味着开发人员必须知道特殊符号才能自由地生成URL。
  2. \n

  3. 对参数进行URL编码 - 这意味着开发人员必须知道URL编码值才能自由地生成URL。
  4. \n

  5. 在具有特殊字符的情况下排除这些参数 - 如果开发人员使用*自由生成URL,则页面仍会出错。
  6. \n

  7. 从查询字符串参数切换到查询字符串参数。
  8. \n

  9. 手动控制查询字符串。
  10. \n

\n大多数简单的正则表达式在查询字符串中是完全有效的,这意味着(4)和(5)都是有效的解决方案。\n(5)是可能的,但我无法想象我是唯一遇到这个问题的人。如果存在官方解决方案,我宁愿不自己创建解决方法。\n(4)是我首选的解决方案。我找到的许多较旧的示例都将可选参数显示在查询字符串中,所以我希望逻辑仍然有效,而分号版本只是默认选项。\n是否可以告诉路由器使用查询字符串参数而不是现在所做的分号分隔的内容?\n我在angular.io和stackoverflow上进行了搜索,但没有找到任何答案或有人提出这个问题。\n谢谢。

0
0 Comments

在Angular中,根路由的可选参数是通过查询字符串来表示的,而对于子路由来说,它们被添加为矩阵参数。然而,有用户提出了一个问题,即如何使用查询字符串代替矩阵参数。根据官方文档和GitHub上的讨论,目前还没有办法直接关闭矩阵参数的功能。

根据官方文档中的说明,对于可选参数,Angular的路由系统默认使用查询字符串来表示。这意味着在URL中,可选参数将被添加在问号后面,使用键值对的形式表示。例如,对于一个名为"page"的可选参数,URL可能会是这样的:`/path?param1=value1¶m2=value2`。

然而,对于子路由来说,情况有所不同。子路由的可选参数被添加为矩阵参数,这意味着它们被添加在路径的末尾,使用分号进行分隔。例如,对于一个名为"page"的可选参数,URL可能会是这样的:`/path;param1=value1;param2=value2`。

在GitHub上的讨论中,有用户提出了一个问题,即是否有办法关闭矩阵参数的功能。然而,根据讨论的回答,目前还没有办法直接关闭矩阵参数的功能。这意味着除了不使用子路由之外,目前还没有其他的解决办法。

,目前在Angular中,根路由的可选参数使用查询字符串来表示,而子路由的可选参数使用矩阵参数来表示。如果用户希望完全使用查询字符串来表示可选参数,目前的解决办法是避免使用子路由。希望官方能在将来的版本中提供关闭矩阵参数功能的选项。

参考链接:

- [Angular官方文档-ROUTING & NAVIGATION](https://angular.io/docs/ts/latest/guide/router.html)

- [GitHub讨论-关闭矩阵参数的功能](https://github.com/angular/angular/issues/7616)

0
0 Comments

如何使用查询字符串代替';'的方法

当我们需要在URL中传递参数时,通常会使用查询字符串。然而,在某些情况下,我们可能需要使用不同的分隔符来代替默认的分隔符';'。本文将介绍为什么会出现这个问题以及如何解决它。

问题的原因:

在一些特定的应用场景中,URL中的分隔符';'可能会导致一些问题。比如,在使用Angular框架开发Web应用时,如果我们想要传递多个参数给一个路由,通常会使用queryParams来设置查询字符串。然而,默认情况下,Angular会使用';'作为参数之间的分隔符。这就意味着,当我们传递多个参数时,URL中会出现多个';',这可能会引起一些问题。

解决方法:

为了解决这个问题,我们可以使用查询字符串的替代分隔符。在Angular中,可以通过使用queryParams来设置查询字符串,并使用'&'作为参数之间的分隔符。下面是一个示例代码:

Test

在上面的代码中,我们使用了[queryParams]来设置查询字符串,其中包含两个参数:q和location。注意,我们使用了'&'作为参数之间的分隔符。

当我们点击链接时,将会生成一个URL,类似于以下的形式:

http://www.example.com/users?q=ABC&location=2929

通过使用'&'作为分隔符,我们成功地避免了使用默认的分隔符';',从而解决了潜在的问题。

在一些特定的应用场景中,我们可能会遇到需要使用查询字符串的情况。然而,默认的分隔符';'可能会引起一些问题。为了解决这个问题,我们可以使用替代分隔符'&'来代替默认的分隔符。在Angular中,可以通过使用[queryParams]来设置查询字符串,并使用'&'作为参数之间的分隔符。通过这种方式,我们可以避免潜在的问题,并成功地传递多个参数给一个路由。希望本文对你有所帮助,祝你好运!

0