AngularJS, как правильно внедрить общие сервисы? - PullRequest
0 голосов
/ 20 февраля 2019

https://code.angularjs.org/1.6.3/docs/error/$injector/unpr?p0=documentPreviewServiceProvider%20%3C-%20documentPreviewService%20%3C-%20ezursMedicalRecordsService

enter image description here

main module импортирует commonServices module и caseinfo module, caseinfo module объявляет recordsComponent.

commonServices module объявляет две службы EzursMedicalRecords и DocumentPreviewService с .service.

recordsComponent инъекция EzursMedicalRecordsService, EzursMedicalRecordsService инъекция DocumentPreviewService

Я проверил все:

  1. Правописание правильное
  2. Каждая служба объявляется один раз с .service
  3. Дочерняя служба объявляется до родительской службы
  4. Экземпляр службы предоставляется
  5. Я не являюсьВнедрение $scope в службу

Так объявляются элементы

common-services.module

export default angular.module('app.common-services', [
    angularLocalStorageModule, 
    ngSanitizeModule,
    uiSelectModule,
    ngIdleModule,
    angularLoadingBarModule,
    angularValidationMatchDirective,
    uibTypeaheadModule,
    angularRecaptcha,
    signalrModule
    ])
    .service('documentPreviewService ', documentPreviewService )
    .service('windowEventsService', windowEventsService)
    .service('ezursMedicalRecordsService', ezursMedicalRecordsService)
    .service('blobService', BlobService)

модуль caseinfo

export default angular.module('app.caseinfo', [uirouter, uibAccordionModule, uibTabsnModule, "kendo.directives"])
    .controller('RecordsController', RecordsController)

основной модуль

import caseInfoModule from './case-info-page';
import commonServicesModule from '../common/services/app.common.services';

angular
    .module('app', [
        caseInfoModule,
        commonServicesModule,
    ])

Есть компонент

class RecordsController {
    constructor(urls, $http, ezursGridService, blobService, ezursMedicalRecordsService, dialogService) {
        this.urls = urls;
        this.$http = $http;
        this.ezursGridService = ezursGridService;
        this.blobService = blobService;
        this.ezursMedicalRecordsService = ezursMedicalRecordsService;
        this.dialogService = dialogService;
    }

 RecordsController.$inject = ['urls', '$http', 'ezursGridService', 'blobService', 'ezursMedicalRecordsService', 'dialogService'];

 export default {
    bindings: {
        caseDto:"="
    },
    template,
    controller: RecordsController
};

ezursMedicalRecordsService

class MedicalRecordsService {
    constructor($http, urls, blobService, $window, documentPreviewService) {
        this.$http = $http;
        this.urls = urls;
        this.blobService = blobService;
        this.$window = $window;
        this.documentPreviewService = documentPreviewService;
    }

MedicalRecordsService.$inject = ['$http', 'urls', 'blobService', '$window', 'documentPreviewService'];

export default MedicalRecordsService;

И documentPreviewService

class DocumentPreviewService {
    constructor($http, urls) {
        this.$http = $http;
        this.urls = urls;
    }
}

DocumentPreviewService.$inject = ['$http', 'urls'];

export default DocumentPreviewService;

Мне действительно нужно внедрить documentPreviewService в ezursMedicalRecordsService, который используется во всем приложении.

Я не знаю, почему я могу 'добавить documentPreviewService в ezursMedicalService.У меня есть blob.service, который объявлен так же, как documentPreviewService, но с blob.service все в порядке.

1 Ответ

0 голосов
/ 20 февраля 2019

В объявлении службы позади documentPreviewService есть пробел:

.service('documentPreviewService ', documentPreviewService )

Я полагаю, что удаление этого решит проблему!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...