2017-07-28 40 views
0

後,我更新到最新的角V4.3.2我的所有網址&價值突破,比如我有一個路徑/:值,我想從價值:Angular2路由器URL打破AT&

http://localhost:4200/one&two

但它重定向我:

http://localhost:4200/one

而且由於url的值是動態的,所以很多人可以有&我無法顯示正確的結果。

使用的CustomUrlSerializer我設法取代%26&和導航直通應用工程內,但仍處於初始頁面加載路由器裏的URL被分裂:

import { UrlSerializer, UrlTree, DefaultUrlSerializer } from '@angular/router'; 

export class CustomUrlSerializer implements UrlSerializer { 

    parse(url: any): UrlTree { 
    const dus = new DefaultUrlSerializer(); 
    return dus.parse(url); 
    } 

    serialize(tree: UrlTree): any { 
    const dus = new DefaultUrlSerializer(); 
    const path = dus.serialize(tree); 
    return path.replace(/%26/g, '&').replace(/%2B/g, '+'); 
    } 

} 

是有沒有解決方案可以禁用網址破解&?

+0

爲什麼你需要'&'在URL中?它被用作URL和IMO中的特殊字符,它應該保持這樣的狀態。 – dzejdzej

+0

是的,我知道它是一個特殊的字符,分隔參數,我需要它,因爲值是動態的,許多包含特殊字符,如&,我不希望它被分割... – V01D1

回答

0

好了,所以我知道&用作路由器內部的特殊字符,但如果你需要得到的是價值,而不是分裂它:

編輯:node_modules/@角/路由器/ @角/路由器。 es5.js

var SEGMENT_RE = /^[^\/()?;=&#]+/; 
var QUERY_PARAM_RE = /^[^=?&#]+/; 
var QUERY_PARAM_VALUE_RE = /^[^?&#]+/; 

刪除從正則表達式&,它應該工作。