2016-02-13 5 views
2

Я пью Angular2 и это Routing системы. Я создаю «Мастер проектов» @Component с «ребенком» @Component с использованием @RouteConfig и это выглядит следующим образом:Пропустить объект к компоненту Angular2 с помощью маршрутизатора

const enum State { 
    welcome, basicData, groupsData, overview 
} 

const enum Condition { 
    back 
} 

@Component({ 
    selector: 'router-outlet', 
    templateUrl: '/app/templates/wizard/project/project-wizard-container.html', 
    directives: [ 
     ROUTER_DIRECTIVES, 
    ], 
}) 

@RouteConfig([ 
    { path: '/',   name: 'ProjectWizardWelcome', component: ProjectWizardWelcomeComponent, useAsDefault: true }, 
    { path: '/step2', name: 'ProjectWizardStep2', component: ProjectWizardStep2Component }, 
    { path: '/step3', name: 'ProjectWizardStep3', component: ProjectWizardStep3Component }, 
    { path: '/overview', name: 'ProjectWizardOverview', component: ProjectWizardOverviewComponent }, 
]) 

export class ProjectWizardComponent { 

    mock: Mock = new Mock(); 

    private mapping: {key: State, value: string}[] = [ 
     { key: State.welcome, value: 'ProjectWizardWelcome' }, 
     { key: State.basicData, value: 'ProjectWizardStep2' }, 
     { key: State.groupsData, value: 'ProjectWizardStep3' }, 
     { key: State.overview, value: 'ProjectWizardOverview' }, 
    ]; 

    private transitions: FSM.Transition<State, Condition>[] = [ 
     { from: State.welcome, conditions: [],    to: State.basicData }, 
     { from: State.basicData, conditions: [Condition.back], to: State.welcome }, 
     { from: State.basicData, conditions: [],    to: State.groupsData }, 
     { from: State.groupsData, conditions: [Condition.back], to: State.basicData }, 
     { from: State.groupsData, conditions: [],    to: State.overview }, 
     { from: State.overview, conditions: [Condition.back], to: State.groupsData }, 
    ]; 

    private fsm: FSM<State, Condition> = new FSM(State.welcome, this.transitions); 

    constructor(
     private _router: Router, 
     private _routeParams: RouteParams) { 
    } 

    onPrev(): void { 
     var prevState = this.fsm.apply([Condition.back]).get(); 
     var prevRoute = this.mapping[prevState].value; 
     this._router.navigateByInstruction(this._router.generate([prevRoute]), true); 
    } 

    onNext(): void { 
     var nextState: State = this.fsm.apply([]).get(); 
     var nextRoute = this.mapping[nextState].value; 
     this._router.navigateByInstruction(this._router.generate([nextRoute]), true); 
    } 

    onCancel(): void { 
     this._router.navigate(['Welcome']); 
    } 

} 

мне нужно разделить Mock объект через компонент «ребенок», и я хочу, чтобы понять, что мои варианты находятся. Мое текущее понимание, что:

  1. его можно совместно используя объект-контейнер, который @Injectable как некоторые Service.
  2. используя RouterData. В этом случае мне нужно будет отключить данные из url.

Но есть ли другие способы передать этот объект @Component с помощью маршрутизатора?

ответ

2

Нет, эти два варианта доступны. Я бы предложил общий сервис.

Смежные вопросы