[英]How to update the edited toggle using angular2
我有一个通讯订阅,最初是根据用户登录时收到的通讯设置的。
当我切换时事通讯时,它会给我成功更新的消息,但即使我已将其设置为true,该时事通讯仍设置为false。 谁能帮我解决这个问题。
HTML:
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 text-center">
<span style="font-weight: 100;">Newsletter{{company.newsletter|json}}</span>
<ul class="toggle">
<li>
<mat-slide-toggle class="showToggle" name="subscribe" [(ngModel)]="company.newsletter" #slider required (click)="openPopup($event,company)">
</mat-slide-toggle>
</li>
</ul>
</div>
TS:
**Checklogin:**
this.ApiService
.checklogin()
.subscribe(
user => {
this.company= user.data[0];
}, error => {
console.log(error);
});
**newsletter toggle**
openPopup(event,company) {
var userData:any = {
_id: company._id,
email: company.email,
active: company.active,
newsletter:company.newsletter
};
this.ApiService
.editUserToggle(userData._id,userData)
.subscribe(
user => {
console.log(user);
this.toasterService.pop('success', 'User subscribed Successfully');
}, error => {
if(error.data && error.data.length > 0) {
this.toasterService.pop('error', error.data);
} else {
this.toasterService.pop('error', 'Something went wrong!');
}
})
}
即使在我收到成功消息后,该新闻通讯仍然是错误的
您可能会从update api
获得成功消息,但它与您发送的消息的值相同,因此您总是会得到false,
尝试更改新闻通讯的价值,
var userData:any = { newsletter: !company.newsletter };
openPopup(event,company) {
console.log(company);
if(!this.loggedIn){
event.preventDefault();
this.signIn.show();
}
var userData:any = {
_id: company._id,
email: company.email,
active: company.active,
newsletter: !company.newsletter
};
console.log(userData);
this.ApiService
.editUserToggle(userData._id,userData)
.subscribe(
user => {
console.log(user);
this.toasterService.pop('success', 'User subscribed Successfully');
this.newsletter = userData.newsletter;
}, error => {
if(error.data && error.data.length > 0) {
this.toasterService.pop('error', error.data);
} else {
this.toasterService.pop('error', 'Something went wrong!');
}
})
}
但是您仍然没有更改模型值,因此您应该做的是,在获得成功消息后,添加
this.newsletter = userData.newsletter;
您正在调用该服务以更新新闻信服务,但是您没有切换company.newsletter ngModel值。 尝试一下
openPopup(event,company) {
var userData:any = {
_id: company._id,
email: company.email,
active: company.active,
newsletter:company.newsletter
};
this.ApiService
.editUserToggle(userData._id,userData)
.subscribe(
user => {
console.log(user);
this.toasterService.pop('success', 'User subscribed Successfully');
}, error => {
if(error.data && error.data.length > 0) {
this.toasterService.pop('error', error.data);
} else {
this.toasterService.pop('error', 'Something went wrong!');
}
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.