正常订阅函数声明的函数替换出错 打字错误 我只想在Angular应用程序中服务器的每个成功响应中重用该函数,而不是在每个块中声明它
以下是导致错误的代码正常订阅函数声明的函数替换出错 打字错误 我只想在Angular应用程序中服务器的每个成功响应中重用该函数,而不是在每个块中声明它,angular,typescript,Angular,Typescript,以下是导致错误的代码 @Injectable({ providedIn: "root" }) export class AuthService { ..... .... addUser(){ this.http.post<any>(API_ENDPOINT, postData) .subscribe( //response when success this.registerDone,
@Injectable({ providedIn: "root" })
export class AuthService {
.....
....
addUser(){
this.http.post<any>(API_ENDPOINT, postData)
.subscribe(
//response when success
this.registerDone,
//error
(err) => {
console.log(err);
this.authStatusListener.next(false);
}
);
}
private registerDone(res:any){
this.clearAuthData();
....
....
}
private clearAuthData() {
localStorage.removeItem("userInfo");
}
}
- 丑陋的解决方法是将registerDone函数块的所有内容放入(res)=>{}或
- 因为我将在其他成功响应函数中重用registerDone(res:any)。以干净简单的方式使用此函数,而不是在每个块中重新声明,这将是一件好事
export class AuthService {
.....
....
addUser(){
this.http.post<any>(API_ENDPOINT, postData)
.subscribe(
//response when success
() => this.registerDone(),
//error
(err) => {
console.log(err);
this.authStatusListener.next(false);
}
);
}
private registerDone(res:any){
this.clearAuthData();
....
....
}
private clearAuthData() {
localStorage.removeItem("userInfo");
}
}
导出类身份验证服务{
.....
....
addUser(){
this.http.post了解更多详细信息。在post api subscribe上,您调用了函数registerDone,但出现了一些语法错误,您错过了圆括号,必须将this.registerDone
替换为()=>this.registerDone()
。很抱歉,这也不起作用。首先将this.clearAuthData()
更改为clearAuthData()
在registerDone
函数中。然后将this.registerDone
更改为subscribeThank@jbnize中的registerDone
,这样做行得通,但我想知道为什么不能使用registerDone?实际上我希望将响应作为参数向下传递,因此它应该是(res)=>this.registerDone(res)和私人注册电话(res:any)
export class AuthService {
.....
....
addUser(){
this.http.post<any>(API_ENDPOINT, postData)
.subscribe(
//response when success
() => this.registerDone(),
//error
(err) => {
console.log(err);
this.authStatusListener.next(false);
}
);
}
private registerDone(res:any){
this.clearAuthData();
....
....
}
private clearAuthData() {
localStorage.removeItem("userInfo");
}
}