From 2de1030413b5aeb7c09d458aa839573cf9ddefe7 Mon Sep 17 00:00:00 2001 From: vsavkin Date: Wed, 1 Jun 2016 13:29:02 -0700 Subject: [PATCH] feat(router): add RouterStateCandidate --- modules/@angular/router/src/router_state.ts | 36 ++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/modules/@angular/router/src/router_state.ts b/modules/@angular/router/src/router_state.ts index 8c0c01b29e..1f504ad075 100644 --- a/modules/@angular/router/src/router_state.ts +++ b/modules/@angular/router/src/router_state.ts @@ -1,9 +1,10 @@ import { Tree, TreeNode } from './utils/tree'; import { UrlSegment } from './url_tree'; +import { Route } from './config'; import { Params, PRIMARY_OUTLET } from './shared'; import { Observable } from 'rxjs/Observable'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; -import { Type } from '@angular/core'; +import { Type, ComponentFactory } from '@angular/core'; /** * The state of the router at a particular moment in time. @@ -35,6 +36,15 @@ export function createEmptyState(rootComponent: Type): RouterState { return new RouterState(new TreeNode(activated, []), emptyQueryParams, fragment); } +export function createEmptyStateCandidate(rootComponent: Type): RouterStateCandidate { + const emptyUrl = [new UrlSegment("", {}, PRIMARY_OUTLET)]; + const emptyParams = {}; + const emptyQueryParams = {}; + const fragment = ""; + const activated = new ActivatedRouteCandidate(emptyUrl, emptyParams, PRIMARY_OUTLET, rootComponent, null); + return new RouterStateCandidate(new TreeNode(activated, []), emptyQueryParams, fragment); +} + /** * Contains the information about a component loaded in an outlet. * @@ -53,4 +63,28 @@ export class ActivatedRoute { public params: Observable, public outlet: string, public component: Type | string) {} +} + +export class ActivatedRouteCandidate { + /** + * @internal + */ + _resolvedComponentFactory: ComponentFactory; + + /** @internal **/ + _routeConfig: Route; + + constructor(public urlSegments: UrlSegment[], + public params: Params, + public outlet: string, + public component: Type | string, + routeConfig: Route) { + this._routeConfig = routeConfig; + } +} + +export class RouterStateCandidate extends Tree { + constructor(root: TreeNode, public queryParams: Params, public fragment: string) { + super(root); + } } \ No newline at end of file