【问题标题】:Angular 5 : Displaying an Updated Data not automaticallyAngular 5:不自动显示更新的数据
【发布时间】:2018-10-08 05:52:15
【问题描述】:

按下按钮后我的数据没有自动显示。我需要刷新页面以显示更新的数据,如何使其在按下按钮后自动更新?

updateProfileCompany 的打字稿文件:

updateProfileCompany(){
var getUser = localStorage.getItem('user');
getUser = JSON.parse(getUser)
var id_student = getUser["id"];
var nim        = getUser["nim"];
var nama       = getUser["nama"];
var email      = getUser["email"];
var company    = this.company

let user = {
  id         : id_student,
  nama       : nama,
  email      : email,
  nim        : nim,
  company    : this.company
}
console.log(user.company);
this.authService.updateProfileCompany(user)
.subscribe(user => user);}

我的服务:

updateProfileCompany(user){
let headers = new Headers();
this.loadToken();
var users = localStorage.getItem(this.user);
headers.append('Authorization', this.authToken);
headers.append('Content-Type', 'application/json')
return this.http.put('http://192.168.100.3:3000/users/update', user, {headers: headers})
.map(res => res.json());}

用于更新数据的 Express Endpoints:

router.put('/update', passport.authenticate('jwt', {session:false}), (req, res, next)=>{
    const user = req.body;
    var id_student = user.id;
    var id_company = user.company
    var result = [];
    User.findById(id_student, function(err, user) {
        if(err) {
            console.log(err);
            return res.status(500).send({message: "Error"});
        }
        if(!user) {
            return res.status(404).send({message: "User Not Found"});            
        }
        user.company = id_company;
        result.push(user);
        user.save(function(err, user){
            if(err) {
                return res.status(500).send({message: "Cannot Update, please try again"});
                console.log(err);
            } else {
                return res.status(200).send({message: "Update Success"});
                console.log('Your data has been updated.');
            }
        }); 
        if(id_company){
            Company.findById(id_company, function(err, company) {
                company.students.addToSet(id_student)
                company.save(function(err, company){
                    if(err){
                        console.log(err);
                    }
                    console.log('Your data has been updated.');
                    result.push(company);
                });
            });
        }
    });
});

【问题讨论】:

  • 您需要在订阅中将用户分配给类级别的用户变量。 .subscribe(user => {this.user = user});
  • @fatih ranjeet8082 说您需要更新类的“用户”属性的值,因为最后“用户”属性用于显示数据。您需要通过将值分配给 this.user 来手动完成

标签: node.js angular express mean


【解决方案1】:

您需要在成功更新用户信息后从服务器获取数据,如下所示:-

return this.http.put('http://192.168.100.3:3000/users/update', user, {headers: headers})
.map(res => {
    /* Write call to get updated information from the server and Update your view accordinly */
    return res.json();
  }
})

【讨论】:

  • 现在的错误是什么?你能用你添加的电话来更新你的问题吗?
  • 您的代码没有错误,但我想要的是在按下添加公司按钮后显示更新的数据
  • 是的,我明白你的意思。为此,您需要从服务器获取更新的数据并在成功更新后手动绑定,我试图在我的答案中解释
猜你喜欢
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2018-06-12
  • 2022-11-04
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多