2016-04-13 11 views
0

初めてAngular2を試していますが、サービスを作成する際に問題が発生しています。実際にそのサービスを使用しています。私は、次のしているコンポーネントに続いて、次のデータサービスAngular2サービスの作成と使用

import {Injectable} from 'angular2/core'; 
import {recentActivity} from './app/components/recentActivity/model' 

@Injectable() 
export class RecentActivityDataService { 

    loadList() { 
     const items: Array<recentActivity> = []; 
     items.push({ 
      url: 'From Service', 
      name: 'From Service' 
     }); 

     return items; 
    } 

} 

を作成しました:

私は、次のエラーメッセージ

に取得しています。このコンポーネントを引き上げる

import {Component, OnInit} from 'angular2/core'; 
import {recentActivity} from './model'; 
import {RecentActivityDataService} from './dataService'; 

@Component({ 
    selector: 'recentActivity', 
    templateUrl: './app/components/recentActivity/recentActivity.html', 
    providers: [RecentActivityDataService] 
}) 
export class RecentActivity implements OnInit { 

    items: Array<recentActivity> = []; 

    constructor(private dataService: RecentActivityDataService) { 

    } 

    ngOnInit() { 
     this.items = this.dataService.loadList(); 
    } 

} 

"Uncaught(約束): の" RecentActivity "(?)のすべてのパラメータを解決できません。すべてのパラメータがInjectの で飾られていることを確認してください。 'RecentActivity' は注射可能なもので装飾されています。

私のサービスには@インジェクタブルがあり、私のコンポーネントにはプロバイダとしてリストされているので、私はここで逃しているのか分かりません。しかし、コンストラクタでは、これを解決できないと言ってもまだ失敗しています。私は、次の変更を試してみました

import {Component} from 'angular2/core'; 
import {StandardNavigation} from './navigation/standard'; 
import {RecentActivity} from './components/recentActivity/recentActivity'; 

@Component({ 
    selector: 'cranalytics', 
    templateUrl: './app/main.html', 
    directives: [StandardNavigation, RecentActivity] 
}) 
export class AppComponent { 

} 

次いるapp.Componentで

。私のメインでは、私はAppComponentをブートストラップしています: ブートストラップ(AppComponent);

私は私がデータサービス

import {Component, OnInit, Inject, forwardRef} from 'angular2/core'; 
import {recentActivity} from './model'; 
import {RecentActivityDataService} from './dataService'; 

@Component({ 
    selector: 'recentActivity', 
    templateUrl: './app/components/recentActivity/recentActivity.html', 
}) 
export class RecentActivity implements OnInit { 

    items: Array<recentActivity> = []; 

    constructor( private dataService: RecentActivityDataService) { 

    } 

    ngOnInit() { 
     this.items = this.dataService.loadList(); 
    } 

} 

を輸入しているしかし、それは私に同じエラーメッセージを与える最近の活動ではあり

import {Component} from 'angular2/core'; 
import {StandardNavigation} from './navigation/standard'; 
import {RecentActivity} from './components/recentActivity/recentActivity'; 
import {RecentActivityDataService} from './components/recentActivity/dataService'; 

@Component({ 
    selector: 'cranalytics', 
    templateUrl: './app/main.html', 
    directives: [StandardNavigation, RecentActivity], 
    providers: [RecentActivityDataService] 
}) 
export class AppComponent { 

} 

プロバイダとしてサービスを入れているAppComponentで

+0

「RecentActivity」を要求するクラスはありません。エラーは他のどこかから来ます。あなたは 'RecentActivity'型のコンストラクタパラメータをどこに持っていますか? –

+0

サービスをコンポーネントに提供するのではなく、ブートストラップするとどうなりますか? – Harangue

+0

更新されたメッセージを表示 –

答えて

2

すべてのサービスがどこにでもインポートすることなくそれにアクセスできるように、bootstrap()にrecentActivity依存関係を入れてみてください。

+1

'bootstrap()'にリストされていても、クラスをインポートする必要があります。前者はDIに型を登録することですが、後で静的コードチェッカー(linter)に知らせるコードで使用する型を作成し、それらをDIのキーとして使用してインポートする必要があります。 –

関連する問題