未定义的服务提供者角度1.6和es6

时间:2017-02-25 20:53:22

标签: angularjs ecmascript-6 angular-services es6-module-loader angular-components

我试图使用Angular 1.6和es6创建rest api以获取发布/获取一些数据。 并在Component

中获取未定义的SylabusService

TypeError:无法读取属性' save'未定义的

即可。服务文件



'use strict';
import angular from 'angular';

export function SylabusService($resource) {
  'ngInject';
  return $resource('/api/sylabuss/:id', {
      id: '@_id'
    })
  };




即可。组件文件

你可以在第9行看到,我试图记录它但是回到未定义的



'use strict';
const angular = require('angular');

const uiRouter = require('angular-ui-router');

import routes from './sylabus.routes';
import SylabusService from './sylabus.service';

export class SylabusComponent {
  /*@ngInject*/
  constructor($scope, SylabusService) {
    console.log(SylabusService); //undefined
      $scope.createSylabus = function(){
        SylabusService.save($scope.newSylaBus.title, function(sylabus){
          console.log(sylabus);
        })
    }
  }
}
SylabusComponent.$inject=['$scope'];
export default angular.module('aSpaApp.sylabus', [uiRouter])
  .config(routes)
  .component('sylabus', {
    template: require('./sylabus.html'),
    controller: SylabusComponent,
    controllerAs: 'sylabusCtrl'
  })
  .factory('service',SylabusService)
  .name;




我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的SylabusService实际上被称为service,因此请将其添加到您注入依赖项的部分:

SylabusComponent.$inject=['$scope', 'service'];

或者(或许更好)命名服务SylabusService并注入:

SylabusComponent.$inject=['$scope', 'SylabusService'];
export default angular.module('aSpaApp.sylabus', [uiRouter])
  .config(routes)
  .component('sylabus', {
    template: require('./sylabus.html'),
    controller: SylabusComponent,
    controllerAs: 'sylabusCtrl'
  })
  .factory('SylabusService',SylabusService) // <-- Name the service here
  .name;