2017-11-14 3 views
1

Laravel REST APIを使用して簡単なCMSシステムを作成しようとしています。フロントエンドの場合、私はAngular 4フレームワーク&角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

の最上部にサービスをインポートすることを忘れないでください。コンストラクタを使用して注入できない場合は、injectorを使用します。let cmsService = injector.get(CmsService); Docs:https://angular.io/guide/dependency-injection – Tim

+0

これは私が今やろうとしていることですが、うまく動作しないようです。 ReflectiveInjector.resolveAndCreateの使用 – PieterJan

+0

エラーが発生しました:Httpのプロバイダがありません!私はおそらくかなり近いですが、何かを見ています。そして、私がresolveAndCreateにHttpを追加すると、次のエラーが出ます:ConnectionBackendのプロバイダがありません! @Tim – PieterJan

答えて

0

任意のコンポーネントまたはモジュールでサービスを使用するには、プロバイダーでサービスをインポートする必要があります。プロバイダのセクションのapp.module.tsにあります。

providers: [YourService] 

はIIRCあなたがそのようなサービスをインスタンス化するべきではありませんapp.module.ts

import { YourService } from './yourPath'; 
関連する問題