2016-04-01 4 views
5

サービスを別のサービスに注入したい。私は標準的な角度サービス(Httpなど)を注入するのに問題はありませんが、私自身のサービスを注入しようとすると例外が発生します。別のサービスでカスタムサービスをAngular 2に挿入する

例:

たMyService:

import {Injectable, Inject} from 'angular2/core'; 
import {AnotherService} from '../../services/another.service'; 

@Injectable() 
export class MyService { 
    constructor(Inject(AnotherService) private anotherService: AnotherService) { 
    console.log(this.anotherService.get()); 
    } 
} 

AnotherService:私はMyServiceでを使用しようとすると

import {Injectable} from 'angular2/core'; 

@Injectable() 
export class AnotherService { 

    constructor() { } 
    get() { return 'hello'); } 

} 

私はまだスロー、constructor(private anotherService: AnotherService)を使用してみましたEXCEPTION: No provider for AnotherService!

を取得例外。

ありがとうございます!

答えて

5

Angular 2のドキュメントをお読みください。あなたの正確な問題はここの角度のドキュメントで説明されています:https://angular.io/docs/ts/latest/guide/dependency-injection.html#when-the-service-needs-a-service

プロバイダの配列にサービスを追加する必要があります。これを行わずにHttpを使用できる唯一の理由は、Ionicがプロバイダ配列に配置するためです。 vanilla Angular 2を使用していた場合でも、プロバイダ配列にHTTP_PROVIDERSを追加する必要があります。サイドノートとして

、あなたは、あなただけで行うことができますあなたのコンストラクタで注入することを必要としません:

constructor(private anotherService: AnotherService) { 
    console.log(this.anotherService.get()); 
} 
+0

はどうもありがとうございました!それは今働きます!私はコンポーネントのプロバイダで 'AnotherService'を指定しました。私はもっ​​と注意深く文書を読むべきです。 – NoName

関連する問題