Вызов службы Angular1 из контроллера для сбора данных

0

Я создаю форму со многими представлениями, которые будут агрегированы к объекту, содержащему информацию пользователя. У меня есть компонент, который имеет файл form.js:

import angular from 'angular';    
import FormController from './form-controller';
import FormService from './form-service';

export default angular.module('Form', [])
  .controller('formController', FormController)
  .service('formService', FormService));

форм-service.js:

import angular from 'angular';    

export default class FormService {
  constructor() {
    this.master = {};
  }

 addData(user) {
   this.master = angular.extend(this.master, user);   
   return user; //don't really need to return this yet
  }
}

и контроллер формы:

import angular from 'angular';
import FormService from './form-service';  

export default class FormController {
  constructor() {
    this.service = new FormService;
  }
  update(user) {    
    this.service.addData(this.master);
  }    
}

Поэтому проблема заключается в том, что данные не агрегируются, возможно, потому, что я создаю новый объект службы в конструкторе FormController. Однако в противном случае я получаю

formService2.default.addData не является функцией

сообщение об ошибке

Я знаю, что это кажется глупым, но я немного новичок в угловой и не совсем уверен, как мне следует вызвать функцию сервиса от контроллера.

  • 0
    formService вы не должны использовать инъекцию зависимостей Angular для внедрения formService в ваш контроллер? В противном случае вы создаете новый сервис каждый раз, когда создается экземпляр контроллера. Кроме того, что это. this.master в вашем контроллере?
Теги:

1 ответ

0

Служба является одноэлементной, поэтому в целом приложении есть только один экземпляр вашего сервиса. Если вам нужно создать более одного экземпляра ваших объектов из формы formService, вы должны заменить это:

.service('formService', FormService));

с этим:

.factory('formService', FormService));

Будет интересно, чтобы вы вводили эту услугу внутри класса, поэтому вам не нужно создавать экземпляр с помощью new FormService.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню