angular/modules/@angular/router/src/metadata/metadata.ts
2016-06-09 17:00:15 -07:00

51 lines
1.2 KiB
TypeScript

import {Type} from '@angular/core';
import {stringify} from '../facade/lang';
/**
* Information about a route.
*
* It has the following properties:
* - `path` is a string that uses the route matcher DSL.
* - `component` a component type.
*
* ### Example
* ```
* import {Routes} from '@angular/router';
*
* @Routes([
* {path: '/home', component: HomeCmp}
* ])
* class MyApp {}
* ```
*
* @ts2dart_const
*/
export abstract class RouteMetadata {
abstract get path(): string;
abstract get component(): Type|string;
}
/**
* See {@link RouteMetadata} for more information.
* @ts2dart_const
*/
export class Route implements RouteMetadata {
path: string;
component: Type|string;
constructor({path, component}: {path?: string, component?: Type|string} = {}) {
this.path = path;
this.component = component;
}
toString(): string { return `@Route(${this.path}, ${stringify(this.component)})`; }
}
/**
* Defines routes for a given component.
*
* It takes an array of {@link RouteMetadata}s.
* @ts2dart_const
*/
export class RoutesMetadata {
constructor(public routes: RouteMetadata[]) {}
toString(): string { return `@Routes(${this.routes})`; }
}