<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[x] feature request"><pre class="notranslate"><code class="notranslate">[x] feature request
</code></pre></div>
<p dir="auto">Currently it's very verbose to access route data or params from a service or non active route. To simplify this we can introduce <code class="notranslate">RootActivatedRoute</code> with additional props:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="class RootActivatedRoute extends ActivatedRoute {
    current: ActivatedRoute;
    currentSnapshot // for symmetry, but I never use it
}"><pre class="notranslate"><code class="notranslate">class RootActivatedRoute extends ActivatedRoute {
    current: ActivatedRoute;
    currentSnapshot // for symmetry, but I never use it
}
</code></pre></div>
<p dir="auto">Every <code class="notranslate">ActivatedRoute</code> has a reference to the root <code class="notranslate">ActivatedRoute</code> so it will be very simple and fast to update these props on every successful navigation.</p>
<p dir="auto">Instead of</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="this.router.events
      .filter(event =&gt; event instanceof NavigationEnd)
      .map(() =&gt; this.activatedRoute)
      .map(route =&gt; {
        while (route.firstChild) route = route.firstChild;
        return route;
      })
      .filter(route =&gt; route.outlet === 'primary')
      .mergeMap(route =&gt; route.data)
      .subscribe((data) =&gt; ...);"><pre class="notranslate"><code class="notranslate">this.router.events
      .filter(event =&gt; event instanceof NavigationEnd)
      .map(() =&gt; this.activatedRoute)
      .map(route =&gt; {
        while (route.firstChild) route = route.firstChild;
        return route;
      })
      .filter(route =&gt; route.outlet === 'primary')
      .mergeMap(route =&gt; route.data)
      .subscribe((data) =&gt; ...);
</code></pre></div>
<p dir="auto">we will be able to do</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="this.router.events
      .filter(event =&gt; event instanceof NavigationEnd)
      .mergeMap(() =&gt; this.activatedRoute.root.current.data)
      .subscribe((data) =&gt; ...);"><pre class="notranslate"><code class="notranslate">this.router.events
      .filter(event =&gt; event instanceof NavigationEnd)
      .mergeMap(() =&gt; this.activatedRoute.root.current.data)
      .subscribe((data) =&gt; ...);
</code></pre></div>
<p dir="auto">Or we can even make <code class="notranslate">current</code> an <code class="notranslate">Observable</code> so we won't need to use router events:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="this.activatedRoute.root.current
    .mergeMap(activatedRoute =&gt; activatedRoute.data)
    .subscribe((data) =&gt; ...);"><pre class="notranslate"><code class="notranslate">this.activatedRoute.root.current
    .mergeMap(activatedRoute =&gt; activatedRoute.data)
    .subscribe((data) =&gt; ...);
</code></pre></div>
<p dir="auto">It will work from any component or service.</p>
<p dir="auto">Should be pretty easy to implement. What do you think <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vicb/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vicb">@vicb</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vsavkin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vsavkin">@vsavkin</a> ?</p>
<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[ ] bug report =&gt; search github for a similar issue or PR before submitting
[x] feature request
[x] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question"><pre class="notranslate"><code class="notranslate">[ ] bug report =&gt; search github for a similar issue or PR before submitting
[x] feature request
[x] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong><br>
When using a parametrized route which targets a component, only this component can access those parameters.</p>
<p dir="auto"><strong>Expected/desired behavior</strong><br>
It might be necessary to read the parameters in other components.</p>
<p dir="auto"><strong>Reproduction of the problem</strong><br>
If the current behavior is a bug or you can illustrate your feature request better with an example, please provide the steps to reproduce and if possible a minimal demo of the problem via <a href="https://plnkr.co" rel="nofollow">https://plnkr.co</a> or similar (you can use this template as a starting point: <a href="http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5" rel="nofollow">http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5</a>).<br>
Consider the following route configuration</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="export const routes: RouterConfig = [
 { path: 'confirmation/:hashID', component: ConfirmationComponent, canActivate: [AuthGuard] },
];
"><pre class="notranslate"><code class="notranslate">export const routes: RouterConfig = [
 { path: 'confirmation/:hashID', component: ConfirmationComponent, canActivate: [AuthGuard] },
];

</code></pre></div>
<p dir="auto">Consider the following code as part of the ConfirmationComponent</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="this.activatedRoute.params.subscribe(params =&gt; {
            var hashID = params['hashID'];
        },"><pre class="notranslate"><code class="notranslate">this.activatedRoute.params.subscribe(params =&gt; {
            var hashID = params['hashID'];
        },
</code></pre></div>
<p dir="auto">If I use the above code in any other component, hashID won't be available. It is necessary to read location.path() and extract the hashID value.</p>
<p dir="auto"><strong>What is the expected behavior?</strong><br>
Although I understand that the targeted component it the ConfirmationComponent, sometimes other components might need to have access to the parameters explicitly written in the URL.</p>
<p dir="auto"><strong>What is the motivation / use case for changing the behavior?</strong></p>
<p dir="auto"><strong>Please tell us about your environment:</strong></p>
<ul dir="auto">
<li><strong>Angular version:</strong> 2.0.0-rc.4</li>
<li><strong>Browser:</strong> [<strong>all</strong> | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]</li>
<li><strong>Language:</strong> [all | <strong>TypeScript 1.8</strong> | ES6/7 | <strong>ES5</strong>]</li>
</ul>