2017-11-14 2 views
1

Laravel REST API를 사용하여 간단한 CMS 시스템을 만들려고합니다. 프론트 엔드를 위해 Angular 4 프레임 워크 & angular CLI를 사용하고 있습니다. 이제 동적 경로를 생성하려고합니다. (각 페이지에 대해 경로를 생성하는 & 서비스를 사용하여 API에서 페이지를 가져옵니다.) 나는 이것을 로컬 데이터 시뮬레이션으로 시도해 보았다.라우팅 모듈의 서비스를 사용하는 각도 4

Routing.module.ts는

let cmsService: CmsService = new CmsService(); 
const pages = cmsService.getPageNames(); 

const routes: Routes = [ 
    { path: '', component: OverviewComponent }, 
    { path: 'login', component: LoginComponent} 
]; 

for (let i = 0; i < pages.length; i++) { 
    routes.push(
    { path: pages[i].toString(), component: PageEditComponent} 
); 
} 

나는 이것이 아마 일을하는 가장 좋은 방법은 아니라는 것을 알고 있지만했다. 이제는 HTTP를 주입해야하고 다음을 수행하면 http가 주입되기를 기대하기 때문에 더 이상 작동하지 않으므로 모든 것이 중단되었습니다.

let cmsService: CmsService = new CmsService(); 

어쩌면 http 변수를 작성하여 전달할 수는 있지만 다소 더러울 수도 있습니다. 그래서 나는 이것을하는 더 쉬운 방법이 있는지 궁금해하기 시작했습니다. 예를 들어 새로운 서비스를 만드는 대신에 서비스를 주입하는 것이 좋습니다. 그리고이 방법으로 검색 한 페이지의 경로를 만듭니다.

미리 감사드립니다.

+0

의 상단에있는 서비스를 가져 잊지 마세요 IIRC 당신이해야하지 그런 실체화 서비스를 제공합니다. 생성자를 사용하여 생성자를 삽입 할 수없는 경우 injector를 사용하십시오. let cmsService = injector.get (CmsService); 문서 : https://angular.io/guide/dependency-injection – Tim

+0

그게 지금하고 싶은 일이지만, 제대로 작동하지 않는 것 같습니다. ReflectiveInjector.resolveAndCreate 사용 – PieterJan

+0

이제 오류가 발생합니다. Http! 나는 아마 거의 가깝지만 뭔가를 조사하고 있습니다. 그리고 HTTP를 resolveAndCreate에 추가하면 다음 오류가 발생합니다. ConnectionBackend에 대한 공급자가 없습니다! @Tim – PieterJan

답변

0

모든 구성 요소 또는 모듈에서 서비스를 사용하려면 공급자에서 서비스를 가져와야합니다. 공급자 섹션의 app.module.ts에 있습니다.

providers: [YourService] 

는 app.module.ts

import { YourService } from './yourPath';