首页 > 解决方案 > Angular 9如何停止查询参数编码

问题描述

我正在尝试从我的 Angular 应用程序中的 url 检索一个长而复杂的令牌。

示例 url 可能如下所示(注意 id 和 token 参数):

https://localhost:5001/reset?id=e77d8ba0-860e-41ef-9b22-2faa5eb9bcac&token=CfDJ8O1GI7keU8xGn9z9kiO90U9OTQLSPVN0JS00bsu%2FrMuTyaNYuls37zECb0RQk1oHJHJtuWlyFf2K%20ExY%2FWQ9xKUKWkxWQADFDw8fPIc4z%206y55yaIsljI0MPQZOR8BYggN7rQb1e891y3yIiQQJI0kjsvTLcO1NUpH2tt679sdB45x2p1zYPjoRU6ddlMKcxmx6Q538RTB99gek%20YNgiCH73h2pRRWewlcPRfS80G4Ya `

虽然我可以使用查询参数映射来检索我的值,但 Angular 似乎在玩数据:/

    this.route.queryParamMap.subscribe(
      paramMap => {

        this.token = paramMap.get('token');

        console.log(document.location);
        // ...CfDJ8O1GI7keU8xGn9z9kiO90U9OTQLSPVN0JS00bsu%2FrMuTyaNYuls37zECb0RQk1oHJHJtuWlyFf2K ExY%2FWQ9xKUKWkxWQADFDw8fPIc4z 6y55yaIsljI0MPQZOR8BYggN7rQb1e891y3yIiQQJI0kjsvTLcO1NUpH2tt679sdB45x2p1zYPjoRU6ddlMKcxmx6Q538RTB99gek YNgiCH73h2pRRWewlcPRfS80G4Ya

        console.log(this.token);
        // CfDJ8O1GI7keU8xGn9z9kiO90U9OTQLSPVN0JS00bsu/rMuTyaNYuls37zECb0RQk1oHJHJtuWlyFf2K ExY/WQ9xKUKWkxWQADFDw8fPIc4z 6y55yaIsljI0MPQZOR8BYggN7rQb1e891y3yIiQQJI0kjsvTLcO1NUpH2tt679sdB45x2p1zYPjoRU6ddlMKcxmx6Q538RTB99gek YNgiCH73h2pRRWewlcPRfS80G4Ya 

      });

它似乎是自动编码特殊字符(比如把 a%2F变成 a /)。我查看了 Angular.io 文档并搜索了类似的情况,但我就是不知道如何阻止 Angular 进行这种编码。

有谁知道我做错了什么?

标签: javascriptangulartypescriptspecial-charactersquery-parameters

解决方案


尝试encodeURIComponent

this.route.queryParamMap.subscribe(
  paramMap => {

    this.token = encodeURIComponent(paramMap.get('token'));

    console.log(this.token);

  });

推荐阅读