代码之家  ›  专栏  ›  技术社区  ›  Timothy

如何在Angular 6中解码queryParams中的特殊字符?

  •  1
  • Timothy  · 技术社区  · 7 年前

    我需要预处理queryParams并将其转换为正确的链接: 例如,用户输入以下链接:

    http://myapp.com/?query=string&filter=1&sort=desc
    

    我需要转换回所有特殊字符:

    http://myapp.com/?query=string&filter=1&sort=desc
    

    否则,queryParams对象具有以下结果:

    {
      amp;query: "string"
      amp;filter: 1,
      amp;sort: "desc",
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   patelvaibhav27    7 年前

    这里有一个完整的例子 https://stackblitz.com/edit/hello-angular-6-decode-special

    角度6示例

      link = 'http://myapp.com/?query=string&filter=1&sort=desc';
      newLink = '';
    
      constructor() {
        // I can't use a script tag in this example
        this.newLink = this.decodeEntities(this.link);
      }
    
      decodeEntities(str) {
        // this prevents any overhead from creating the object each time
        const element = document.createElement('div');
        if(str && typeof str === 'string') {
            // strip script/html tags
            str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
            str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
            element.innerHTML = str;
            str = element.textContent;
            element.textContent = '';
          }
          return str;
      }
    

    var decodeEntities = (function() {
      // this prevents any overhead from creating the object each time
      var element = document.createElement('div');
    
      function decodeHTMLEntities (str) {
        if(str && typeof str === 'string') {
          // strip script/html tags
          str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
          str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
          element.innerHTML = str;
          str = element.textContent;
          element.textContent = '';
        }
    
        return str;
      }
    
      return decodeHTMLEntities;
    })();
    
    
    // I can't use a script tag in this example
    var text = decodeEntities('http://myapp.com/?query=string&amp;filter=1&amp;sort=desc');
    
    document.write(text);
    
    推荐文章