下面是我在Postman中执行的请求,它工作正常,它只是发送一个显示值(字符串)“true”/“false”来启用或禁用一个选项卡,然后我检查get请求以获取所有选项卡,并看到它更改了选项卡的值。
问题是在Angular ,我发送的值,也得到了一个200 OK响应没有错误,但当我检查 Postman 得到请求,我没有在我禁用或启用从前面的选项卡更改
/**
* 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));
}
下面是订阅服务的ts文件
/**
* 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
);
}
});
}
这是来自Web浏览器的响应:第一次
我能做错什么?
3条答案
按热度按时间3qpi33ja1#
我认为在
changeSiwaTabs
函数中,JSON.stringify
和map
运算符是无用的。它是一个POST API,所以有效负载是一个JSON对象。你不需要字符串化该有效负载。并且不应该有
map
操作符,因为在ngOnInit
中,它是订阅的。6rqinv9w2#
在get方法中,你需要是布尔值而得到的是字符串,对吗?
vfwfrxfs3#
这是Access-Control-Allow-Origin标头的后端问题