"Je crée un formulaire avec de nombreuses vues qui seront agrégées à un objet contenant des informations sur l'utilisateur. J'ai un composant qui a un fichier 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));
form-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
}
}
et contrôleur de forme:
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);
}
}
Le problème est donc que les données ne s’agrègent pas, probablement parce que j’instancie un nouvel objet de service dans le constructeur FormController. Cependant, sinon, je reçois un
formService2.default.addData n'est pas une fonction
Message d'erreur
Je sais que cela semble idiot, mais je suis un peu nouveau pour angulaire et je ne sais pas vraiment comment appeler une fonction de service à partir du contrôleur.
Réponses:
0 pour la réponse № 1Un service est un singleton, donc il n'y en a qu'uninstance de votre service dans l'ensemble de l'application. Si vous avez besoin de créer plus d'une instance de vos objets à partir de votre formService, vous devez remplacer ceci:
.service("formService", FormService));
avec ça:
.factory("formService", FormService));
Sera intéressant que vous injectiez le service dans la classe, donc vous n’avez pas besoin d’instancier avec new FormService
.