Я создаю форму со многими представлениями, которые будут агрегированы к объекту, содержащему информацию пользователя. У меня есть компонент, который имеет файл 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 не является функцией
сообщение об ошибке
Я знаю, что это кажется глупым, но я немного новичок в угловой и не совсем уверен, как мне следует вызвать функцию сервиса от контроллера.
Служба является одноэлементной, поэтому в целом приложении есть только один экземпляр вашего сервиса. Если вам нужно создать более одного экземпляра ваших объектов из формы formService, вы должны заменить это:
.service('formService', FormService));
с этим:
.factory('formService', FormService));
Будет интересно, чтобы вы вводили эту услугу внутри класса, поэтому вам не нужно создавать экземпляр с помощью new FormService
.
formService
вы не должны использовать инъекцию зависимостей Angular для внедренияformService
в ваш контроллер? В противном случае вы создаете новый сервис каждый раз, когда создается экземпляр контроллера. Кроме того, что это.this.master
в вашем контроллере?