[英]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.