2016-12-19 14 views
1

私は、yeomanで作成したカスタムライブラリから既存のionic2プロジェクトにサービスを注入しようとしています。 (NPMモジュールとしてインストールされます)LIBのindex.ts:私のionic2アプリでAngular2.3カスタムライブラリと依存関係注入

@NgModule({ 
    imports: [ 
     CommonModule 
    ], 
    declarations: [ 
     SampleComponent, 
     SampleDirective, 
    ], 
    exports: [ 
     SampleComponent, 
     SampleDirective, 
     SamplePipe 
    ] 
}) 
export default class SampleModule { 
    static forRoot(): ModuleWithProviders { 
     return { 
      ngModule: SampleModule, 
      providers: [SampleService, SettingsSVC] 
     }; 
    } 
} 

は私がSettingsSVCとmodule.tsを注入します。私はapp.moduleの輸入・セクションに追加した場合、それは言う:

予期しない値「SettingsSVC」モジュールによってインポートされた「AppModule」

ない場合、私はコンソールのエラーを取得する「プロバイダが見つかりません」 。

タイプ(クラスは@Injectableに関係なく)自体が認識され、リンクされています。モジュールのIonic2 Appとそのプロバイダセクションに同じクラスを追加すると、Injectionで作業しています。

どのように動作させるかに関する提案はありますか?

答えて

1

@NgModule({ 
    imports: [SampleModule.forRoot()], 
    declaretions: [], 
    providers: [] 
}) 
export class YourAppModule {} 
1

、これを試してみてください、それは予期しない値を言うとき、通常、あなたが正常にインポートされていないをインポートしている今まで何を意味しています。

次のいずれかのSettingsSVCの

1 - パスが間違っている

2 - SettingsSVCの名前が間違っている

、3-パスが正しいですが、SettingsSVCだから

を輸出していませんインポートが実際にSettingsSVCにインポートされていることを確認するには、後にconsole.logを入れてログアウトしてください。

import {SettingsSVC} from 'the/path/' 

console.log('SettingsSVC',SettingsSVC); 

ログにundefinedと表示されている場合は、間違いなく上記のいずれか(または類似したもの)です。

ちょっと混乱しましたが、あなたはサービスとしてSettingsSVCをインポートしてプロバイダに入れるか、それをモジュールとしてインポートしてインポートしたいのですか?

あなたは両方を持つことはできません!

関連する問題