2016-11-04 2 views
0

서비스에서 경로 데이터를로드하고 각도 2 RC 결승으로 경로를 자동 생성하려고합니다. Router.Module.forRoot() 함수를 통해 경로 데이터를 할당 할 수 있지만 가져온 데이터를 함수에 할당하는 방법은 알 수 없습니다. 아래 코드를 시도했지만 "Property 'forRoot'가 'RouterModule'오류"유형에 존재하지 않습니다.각도 2 RC 결승 - 서비스에서 경로 데이터를 동적으로로드

나는 완전히 벗어 났지만 코드는 대략 내가 성취하려고하는 것을 보여야합니다. 앱 경로는 다음과 같습니다. mysite.com/london/ mysite.com/new-york/ 등이 방법이 있습니까?

내가 사용하고 라우터 버전입니다 : "각/라우터 @": "~ 3.0.1"

app.module.ts :

import { NgModule, OnInit } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 
import { AppComponent } from './app.component'; 
import { RouterModule } from '@angular/router'; 
import { PathService } from './path.service'; 
import { Path } from './path'; 

@NgModule({ 
    imports: [ 
     BrowserModule, 
     FormsModule, 
     HttpModule, 
     RouterModule 
    ], 
    declarations: [ 
     AppComponent 
     ], 
    providers: [ 
     PathService 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule implements OnInit { 
    private ROUTES: Array<Object>; 
    private paths: Path[]; 

    constructor(
     @Inject(RouterModule) private _routerModule: RouterModule, 
     @Inject(PathService) private _pathService: PathService) {} 

    ngOnInit() { 
     this.getPathData(); 
    } 

    getPathData() { 
     this._pathService.getPaths().subscribe((paths: Path[]) => this.paths = paths, (err: any) => { },() => this.generateRoutes()); 
    } 

    generateRoutes() { 
     this.ROUTES = 'do something to this.paths and assign route date here'; 

     this._routerModule.forRoot(this.ROUTES); 
    } 
} 

JSON :

[ 
    { 
     id: "1", 
     name: "London", 
     path: "london" 
    }, 
    { 
     id: "2", 
     name: "New York", 
     path: "new-york" 
    }, 
    { 
     id: "3", 
     name: "Paris", 
     path: "paris" 
    }, 
    { 
     id: "4", 
     name: "Tokyo", 
     path: "tokyo" 
    } 
] 
+0

난 그냥'경로를 사용하여 내 자신의 문제를 해결 결국에 불과하는 데 도움이 의심한다. 이것은 단지 그것에 던져진 모든 도시를 처리합니다. – skyscript

답변

0

잘 보이지 않는 것처럼 보입니다. 원하는 경로에 가장 가까운 경로는 게으른로드 경로입니다. 매우 간단한 데모입니다. 경로는 요청에 따라 처음 방문 할 때로드됩니다. `라우팅 모듈 : "도시"

나는 그것이 가치 샷 :

https://github.com/danday74/angular2-router-modular/blob/master/app/app-routing.module.ts

+0

답장을 보내 주셔서 감사합니다. 그러나 게으른로드가 필요한지 확실하지 않습니다. 내 응용 프로그램에는 웹 사이트 섹션을 JSON 형식으로 출력하는 API가 있습니다. 예를 들어, 위치 이름. 이 위치 이름은 앱 URL의 경로 이름이기도합니다. 예 : mysite.com/london/ 및 mysite.com/new-york/. JSON에서이 위치 이름을 가져 와서 앱 경로를 생성 할 방법을 찾고 있습니다. 위치 이름의 수는 다양 할 수 있으며 앱 백엔드에서 업데이트됩니다. 이상적으로는 RouterModule로 자동 전달됩니다. – skyscript

+0

당신은 mysite.com/location/ : city ...를 가질 수 있습니다. 도시가 유효하다면 위치 경로를 사용하십시오 --- 도시가 유효하지 않은 경우 notfound 구성 요소를 사용하십시오 - 아마도 귀하의 필요를 충족시킬 수 있습니다 (또는 발견되지 않은 구성 요소로 리디렉션합니다).) – danday74

+0

하지만 정적 데이터 나 데이터베이스 및 JSON 출력 이외의 위치에 대한 참조가 없도록 설정할 수 있습니까? 이상적으로, 응용 프로그램은 범용이어야하므로 위치가 변경된 경우 파일/폴더를 만들거나 삭제할 필요가 없습니다. – skyscript

관련 문제