私は値を解決するために外部サービス内の$transition$
オブジェクトにアクセスしようとしています。解決法の外部Uiルータ
私の状態の定義は次のようになります。
$stateProvider.state(
'detailView.showDocument', {
url: '/:documentId',
views: {
'sidebar': {
component: 'thumbnailView',
},
'main': {
component: 'mainView',
}
},
params: {
document: null
},
resolve: {
document: 'resolveDocumentService',
}
}
);
私のサービスは、次のようになります。$transition$
オブジェクトを注入することができないため
service.$inject =[
'$transition$',
];
function service(
$transition$
) {
// do something
}
これはエラーになります。 その後、私は$uiRouterGlobals
を使用する解決策を見つけましたが、これは私にとって少し奇妙なようです。
$transition$
オブジェクトがサービス内で移行の値を解決するために利用できない理由はありますか?
resolve: {
document: [ '$transition$', function($transition$) {
// write your logic here as `$transition$` will be available here
} ]
}
この関数は、注射され、そしてUIルータは自動的に必要な依存関係を注入:次のように
おそらくXYの問題があります。 $ transition $はローカル依存関係であり、なぜそれがローカルであるのは、現在の状態に対してローカルであるということです。あなたの例では、resolveDocumentServiceはシングルトンになり、一度評価されるので、$ transition $は何の意味もありません。あなたは$ transition $で何をしようとしていますか? – estus
@Martinあなたが使っているAngular-ui-routerのバージョンは? –