2017-07-05 8 views
-1

私はAngular 2プロジェクトでui-routerを使用しています。状態に入ると、サービス内の関数を呼び出して更新を行う必要があります。私のコードは次のようなものです:角2 ui-router:onEnterにサービスを注入

import { dataService } from '../data.service'; 
export const stateA = { 
    name: 'stateA', 
    url: '', 
    onEnter: function(trans, state, dataService) { 
     dataService.update(); 
    } 
} 

しかし、私はこのようにonEnterにdataServiceを注入できないようです。誰でも正しい方法を知っていますか?ありがとう!

DIに登録アンギュラ1のみのサービス(活字体を使用して)自動的に注入することができるように角度2は、手動注入遷移からインジェクタを取得し、データをフェッチする

を注射の同じスタイルを使用しない

答えて

0

サービス(どのトークンであれ、それはDIで使用して登録されます)。

export const stateA = { 
    name: 'stateA', 
    url: '', 
    onEnter: function(trans, state) { 
     const dataService = trans.injector().get('dataService'); 
     dataService.update(); 
    } 
} 

しかし、は、ES6モジュールのインポート/エクスポートを使用してインポートしています。おそらくDIを使用する必要はありません。すでに参照があるからです。

import { dataService } from '../data.service'; 
export const stateA = { 
    name: 'stateA', 
    url: '', 
    onEnter: function(trans, state) { 
     dataService.update(); 
    } 
} 
+0

私はルートモジュール 'providers:[dataService]'で参照しました。あなたが指定した2番目のオプションを使用しようとすると、 'Property' update 'が' typeof dataService '型に存在しません。' – Viv

+0

最初のオプションを試したとき、エラーは 'The transition errored、detail:Error :ModeServiceのプロバイダがありません!しかし、私はそれをapp.module.ts(ルートモジュール)の中に入れました。何が原因なのか? – Viv

関連する問題