私は、appという名前のメインモジュールと、app.ReportingApp、app.MediaJobApp、app.ManageUsersという子モジュールを持つ角型アプリケーションを持っています。グローバルモジュールで宣言したときに角型サービスが継承されない
ローカルのストレージから一部のアラートを表示するサービスと、そうでないものがあります。
私が見つけた問題は、子モジュールから使用したいコントローラにサービス依存関係を注入すると、それが壊れてしまうことです。しかし、私がappの代わりに私のサービスで 'app.Reporting'を宣言すると、動作しますが、他のものを壊します。
私はこのようなサービスを利用できませんか?論理的にはメインモジュールをサービスで呼び出させ、子モジュールはメインモジュールに関連するサービスを呼び出すことができますが、モジュール間の分離を満たすために別のサービスを作成する必要があるようです。ここで
は、いくつかのコードは次のとおりです。
app.js:
angular.module('app', ['app.MediaJobApp', 'app.ManageUsers', 'app.ReportingApp'])
.run(function ($http) {
$http.defaults.headers.common['X-XSRF-Token'] =
document.getElementsByName('__RequestVerificationToken')[0].getAttribute("value");
});
app.ReportingApp.js:
angular.module('app.ReportingApp', []);
PageAlertService.js:
angular.module('app').service('PageAlertService', function() {
this.setAlert = function() {
console.log("In setAlert");
if (localStorage.getItem("Success")) {
var alertObj = {
alert: "Success",
alertMessage: localStorage.getItem("Success")
};
console.log(alertObj);
} else if (localStorage.getItem("Error") && localStorage.getItem("Error") != null) {
var alertObj = {
alert: "Error",
alertMessage: localStorage.getItem("Error")
};
};
return alertObj;
};
this.errorStatusCheck = function(error, successString) {
if (error.status = -1) {
localStorage.setItem("Success", successString);
} else {
localStorage.setItem("Error", "Error occured: " + error.status + error.statusText);
};
};
});
とトップReportingCtrl.js:
angular.module('app.ReportingApp').controller('ReportingCtrl',
[
'$scope',
'ReportingService',
'PageAlertService',
function ($scope, ReportingService, PageAlertService) {
私が得るエラーは:Error: [$injector:unpr] Unknown provider: PageAlertServiceProvider <- PageAlertService <- ReportingCtrl
です。私が上記で述べた問題が原因であることが判明しました。
ヘルプが大歓迎です!ありがとう!
あなたのappモジュールはapp.ReportingAppモジュールに依存します(その逆ではありません)ので、app.ReportingAppのappモジュールで定義されたサービスにアクセスすることはできません。 app.DataServiceのようなサービス用のseprateモジュールを定義し、それをあなたのapp.ReportingAppモジュールに依存関係として追加してください。 – Knitesh
あなたのユースケースを示すと思われるplnkrを作成し、期待どおりに動作することを示します。あなたはdevtoolsでconsole.logsを見ることができます。 https://plnkr.co/edit/IZyRm2srvysogQroESlL?p=preview – ChrisG
ありがとう、私は今理解しています! – DDelgro