2015-01-12 16 views
2

我有這個簡單的測試設置:具有參數parA的路線A和具有參數parB的子路線B角落飛鏢中的層級路線參數

'A' : ngRoute 
    (
     path : '/A/:parA', 
     enter: (RouteEnterEvent e) 
     { 
      print ('ENTERED A'); 
      e.parameters.keys.forEach(print); 
     }, 
     mount: 
     { 
      'B' : ngRoute 
      (
       path: '/B/:parB', 
       enter: (RouteEnterEvent e) 
       { 
        print ('ENTERED B'); 
        e.parameters.keys.forEach(print); 
       } 
      ) 
     } 
    ) 

當我去/#/A/1234/B/5678我希望得到

Entered B 
parA 
parB 

相反,我得到

Entered A 
parA 
Entered B 
parB 

這意味着一個組件在B創建它的構造函數有一個RouteProvider不能訪問參數parA

回答

1

似乎與此問題有關https://github.com/angular/route.dart/issues/85。 也許在那裏列出的解決方法也適用於您。

從問題複製:

作爲當前的解決方法我已經通過所有 父路徑進入,並將它們添加到RouteEvent一個輔助方法。

/// Adds the parameters of all parent routes to [e]. 
RouteEvent _addParentParams(RouteEvent e) { 

    // Function to recursively get the parents. 
    Function recursiveAddParentParams; 
    recursiveAddParentParams = (Route route) { 
    // Set the parent parameters to the event. 
    e.parameters.addAll(route.parameters); 

    if (route.parent != null) { 
     recursiveAddParentParams(route.parent); 
    } 
    }; 

    recursiveAddParentParams(e.route.parent); 

    return e; 
}