提问人:Edd Núñez 提问时间:2/9/2019 最后编辑:Jota.ToledoEdd Núñez 更新时间:2/12/2019 访问量:136
无法从服务 Angular 6 获取回调
Cannot get callback from service Angular 6
问:
我用这个函数创建了一个服务
public crearNegocio(negocio,callback){
var user = JSON.parse(localStorage.getItem("currentUser"));
var id_usuario = user.objUser.id_usuario;
negocio.id_usuario = id_usuario;
this.http.post(this.config.initialConfig+"/negocio/create/",negocio)
.subscribe((response)=>{
callback(null,response)
},(error)=>{
callback(error)
})
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.1/angular.min.js"></script>
然后在组件中,我这样称呼它:
import { NegocioService } from '../negocio.service';
constructor(private negocioS:NegocioService) {}
crearNegocio(){
this.loader=true;
this.negocioS.crearNegocio(this.negocio,function(err,res){
if(!err){
this.loader=false;
console.log("res",res);
}else{
this.loader=false;
console.log(err)
}
});
}
它可以工作并插入到我的表中,一切正常,但是当我使用回调在服务函数内打印时,它什么也没做,它只是跳过它,也是组件。
我在其他服务上有相同的代码,他们的 callbaks 工作正常。
答:
0赞
Edd Núñez
2/12/2019
#1
我解决了它,这是两个问题,一个在我的后端有一个 async.each。
但另一个是“这个”。它从回调中获取“this”,因此,由于它没有名为 loader 的变量,因此它不会执行任何操作。
crearNegocio(){
var self = this;
this.loader=true;;
this.negocioS.crearNegocio(self.negocio,function(err,res){
if(!err){
self.loader=false;
}else{
self.loader=false;
console.log(err);
}
});
}
评论