(Angular2)数据在调用之前未更新

时间:2017-06-01 15:55:38

标签: angular

我在从数据库中获取数据时遇到了一些问题。我希望每次用户按下按钮时执行一个方法来获取数据,但是某些东西无法正常工作。

我的代码:

constructor (private cynomysService: CynomysService, private route:  ActivatedRoute, private _router: Router ){
        ...
//THESE ARE THE SERVICES I'M EXECUTING WHEN MY COMPONENT IS LOADED.
        this.getFavPubli().subscribe((s) => {this.colorearFav()});
        this.getDestPubli().subscribe((s) => {this.colorearDest()});

    }

我将仅使用其中一种方法给出示例,因为它们都具有相同的代码。

getFavPubli() {
        return this.cynomysService.getFavoritoPublicacion(localStorage.getItem('usuario')).map((fp) => {this.favoritoPublicacion = fp});
    }

addFavorite() {
        this.favoritos = this.publicacionRecibida[0].favoritos;
        this.idRecibido = this.publicacionRecibida[0].idPublicaciones;

        let comprobarFavorito = this.favoritoPublicacion.filter(favorito => {
            return favorito.publicacion == this.route.snapshot.params['id']});

        if(comprobarFavorito.length) {
            let variable = comprobarFavorito[0];
            if(variable.deleted == 0) {
                this.cynomysService.deleteFavPubli(variable.id_favorito_publicacion).subscribe((f) => {this.getFavPubli().subscribe()});
            } else if(variable.deleted == 1) {
                this.cynomysService.deleteFavPubli(variable.id_favorito_publicacion).subscribe((f) => {this.getFavPubli().subscribe()});
            }
        } else if(!comprobarFavorito.length) {
            let newFavUser = {
                publicacion: this.idRecibido,
                usuario: localStorage.getItem('usuario'),
                deleted: 0
            };

            var json = JSON.stringify(newFavUser);
            this.cynomysService.addFavoriteUser(json).subscribe((f) => {this.getFavPubli()});
        }
    }

技术上我执行在函数中到处调用服务的方法:如果我插入新的收藏夹,我启动该方法。如果我将收藏夹更新为已删除,我将启动该方法。如果我将收藏夹更新为未删除,我也会执行该服务...但仍然这样做,第一次加载组件时(当数据库中的表为空时)我按下收藏夹按钮它会插入收藏夹点击...

你能帮忙吗?谢谢!

0 个答案:

没有答案