背景:
私が取り組んでいるアプリでは、2 つの場所で使用されているコンポーネントがあります。ある場所では、マテリアル デザインbottomSheet
システムから呼び出されています。別の例では、ui-router 状態システムを介してコンポーネントを直接使用しています。
これが問題を引き起こしているセットアップです。適切なパッケージの依存関係がすべて設定されているステートメントを既に取得していangular.module
ます - 私はチームと一緒にこのアプリに何ヶ月も取り組んできましたが、問題は具体的には以下のコードであり、追加したばかりです。
routes.ts
namespace Main {
RouteConfig.$inject = ['$stateProvider'];
function RouteConfig($stateProvider) {
$stateProvider
.state('main.myAwesomeFeature', {
url: '^/myawesomefeature',
component: 'awesomefeature',
resolve: {
awesomeDefaults: () => new Controllers.AwesomeDefaults(1, 2, 3)
}
});
// Other routing minutiae, unimportant to the question
}
angular.module('app').config(RouteConfig)
}
awesomefeature.ts
namespace Controllers {
export class AwesomeDefaults {
public constructor(
number1: number,
number2: number,
number3: number
) {
}
}
export class AwesomeFeatureCtrl {
public static $inject: string[] = [
'awesomeDefaults'
];
public controller(
public awesomeDefaults: AwesomeDefaults
) {
}
// ...Other methods and irrelevant stuff...
}
angular
.module('app')
.controller('awesomeFeatureCtrl', AwesomeFeatureCtrl);
}
namespace Components {
export var awesomeFeatureCmpt: ng.IComponentOptions = {
bindings: {},
controller: 'awesomeFeatureCtrl',
controllerAs: '$ctrl',
templateUrl: '(Irrelevant, as is the HTML)'
};
angular
.module('app')
.component('awesomefeature', awesomeFeatureCmpt);
}
問題: 「Awesome Feature」に直接移動しようとすると、HTML がレンダリングされないだけでなく、次のコンソール エラーが表示されます。
angular.js:14525 Error: [$injector:unpr] Unknown provider: awesomeDefaultsProvider <- awesomeDefaults <- awesomeFeatureCtrl
http://errors.angularjs.org/1.6.4/$injector/unpr?p0=awesomeDefaultsProvider%20%3C-%20awesomeDefaults%20%3C-%20awesomeFeatureCtrl
at angular.js:66
at angular.js:4789
at Object.getService [as get] (angular.js:4944)
at angular.js:4794
at getService (angular.js:4944)
at injectionArgs (angular.js:4969)
at Object.invoke (angular.js:4995)
at $controllerInit (angular.js:10866)
at nodeLinkFn (angular.js:9746)
at angular.js:10154
何らかの理由で、$stateProvider.state({resolve})
が my を適切に解決awesomeDefaults
して値を に注入していないようawesomeFeatureCtrl
です。
質問:
思った通りに動か
ないのはなぜresolve
ですか?
私の理解では、 UI Router Documentationresolve
に従って、オブジェクトは名前付きの各インデックスを取得し、その上にある関数を実行してから、ルート内のモノのコントローラーに解決します。明らかに私が何かを覚えていないか、誤解している。