Post 服务未从 Angular 前端更新值,但它在邮递员中工作
Post service is not updating value from Angular front, but it's working in postman
这是我在 Postman 中执行的请求,它工作正常,它只是发送一个显示值(字符串)“true”/“false”来启用或禁用选项卡,然后我将 get 请求签入到获取所有选项卡并查看它是否更改了选项卡的值。
问题在 Angular,我正在发送值并收到 200OK 响应,没有错误,但是当我检查邮递员获取请求时,我在禁用或启用的选项卡中没有任何变化前面
/**
* 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
);
}
});
}
这是网络浏览器的响应:
我哪里做错了?
我认为在changeSiwaTabs
函数中,JSON.stringify
和map
运算符没有用。
它是一个 POST api 所以,有效载荷是一个 JSON 对象。您不需要对该有效负载进行字符串化。 map
运算符不应该存在,因为在 ngOnInit
中它已被订阅。
public changeSiwaTabs(display: string, tabsID: nubmer) {
...
return this.http.post<any>(..., request);
在 get 方法中你想要布尔值,你得到了字符串。我说得对吗?
这是 Access-Control-Allow-Origin header
的后端问题
这是我在 Postman 中执行的请求,它工作正常,它只是发送一个显示值(字符串)“true”/“false”来启用或禁用选项卡,然后我将 get 请求签入到获取所有选项卡并查看它是否更改了选项卡的值。
问题在 Angular,我正在发送值并收到 200OK 响应,没有错误,但是当我检查邮递员获取请求时,我在禁用或启用的选项卡中没有任何变化前面
/**
* 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
);
}
});
}
这是网络浏览器的响应:
我哪里做错了?
我认为在changeSiwaTabs
函数中,JSON.stringify
和map
运算符没有用。
它是一个 POST api 所以,有效载荷是一个 JSON 对象。您不需要对该有效负载进行字符串化。 map
运算符不应该存在,因为在 ngOnInit
中它已被订阅。
public changeSiwaTabs(display: string, tabsID: nubmer) {
...
return this.http.post<any>(..., request);
在 get 方法中你想要布尔值,你得到了字符串。我说得对吗?
这是 Access-Control-Allow-Origin header
的后端问题