SOLVED ISSUE : It was backend problems with Access-Control-Allow-Origin header
Here is the Request I do in Postman, it works fine, it just send a display value(string) "true"/"false" to enable or disable a tab, and then I check in the get request to get all tabs and see that it change the value of the tab.
The thing is in Angular, I'm sending the values and also getting a 200OK response no error but when I check at the postman get request I have no changes in the tab I disabled or enabled from the front
/**
* get active tabs
*/
public getAvailableTabs() {
return (this.http.get<SiwaTabs[]>(`${ApiProvidersService.CurrentPath()}/Siwa/Settings/SiwaTabs`
).map(tabs => tabs.map(t => new SiwaTabs(
t.id,
t.title,
t.route,
t.UserID,
t.display
))));
}
/**
* set SiwaTabs
* @param display
* @param tabsID
*/
public changeSiwaTabs(display: string, tabsID: number) {
console.log(display, tabsID)
return (this.http.post<any>(`${ApiProvidersService.CurrentPath()}/Siwa/Settings/changeSiwaTabs`, {
display: display,
tabsID: tabsID
}
).map
(result => result));
}
Here is the ts file subscribing to the service
/**
* onInit
* set initial theme
* */
ngOnInit() {
this.getAvailableTabs();
this.openSetting = "none";
this.ReadOnlyStyleGuideNotes = true;
this.Design = this.UserThemes.getTheme(this.User.activeUser.ThemeID);
this.User.setTheme(this.User.activeUser.ThemeID);
this.selectLang(this.User.activeUser.LanguageValue);
this.selectedTabsID(this.Tabs);
this.spinner = new Spinner();
this.timedMessage = new TimedMessage();
let id: number = 2
let display: string = "true"
this.User.changeSiwaTabs(display, id).subscribe((res) => {
console.log(display, id);
console.log(res.status);
if (res.status === true) {
this.timedMessage.show(
"Die Tabs wurden erfolgreich geändert",
"alert-success",
2000
);
}
});
}
This is the response from web browser:
What could I did wrong?
CodePudding user response:
I think in changeSiwaTabs
function, JSON.stringify
and map
operator are useless.
It is a POST api so, the payload is a JSON object. You don't need to stringify that payload. And the map
operator shouldn't be there because in ngOnInit
, it's subscribed.
public changeSiwaTabs(display: string, tabsID: nubmer) {
...
return this.http.post<any>(..., request);
CodePudding user response:
in get method you want boolean and you got string. am I right ?