订阅服务时取消http post

问题描述 投票:0回答:1

被这个错误困扰了一个星期。无法使用 Angular HttClient 向 Heroku 服务器发送简单的 post 请求。在主应用程序模块的提供程序部分定义了所有服务。错误处理服务在发送发布请求后不会记录任何错误(该服务工作正常,我已经在另一个项目中进行了测试)。

组件在不同的模块中定义,但服务在根 app.module.ts 中定义和提供

这些组件实时的模块被导入到主应用程序模块中。

但是无论如何post请求都会被取消!.

API 参数

 email: string 
 password: string

验证模型

用于定义 API 数据参数的模型

export interface AuthModel {
    email: string;
    password: string
}

AuthService.ts

这是我用来注入到我的 component.ts 文件中进行订阅的服务。该服务还使用另一个服务来处理错误情况 HandleError

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
  })
};

@Injectable({
  providedIn: 'root'
})
export class AuthService {

  signUpUrl = 'myurl';
  
  private handleError: HandleError;


  constructor(private http: HttpClient, private httpErrorService: HttpErrorService) { 

    this.handleError = this.httpErrorService.createHandleError('AuthService'); //Problem lies here
  }

  signUp(authModel:  AuthModel) : Observable<AuthModel>
  { 
    return this.http.post<AuthModel>(this.signUpUrl,authModel,httpOptions).pipe( catchError(this.handleError('signup',authModel)) );
  }

}

组件.ts

输入数据后单击按钮时调用提交函数

Submit(): void {
    
    this.authModel!.email = this.emailHolder.value;
    this.authModel!.password = this.passwordHolder.value;

    this.authService.signUp(this.authModel).subscribe((res)=> {console.log(res)});
    
  }

javascript node.js angular rxjs angular-httpclient
1个回答
0
投票

问题出在我的 handleError 函数上,无论响应如何,它都会被取消。因此,请确保大家编写正确的错误处理函数,否则您将得到意想不到的结果。

© www.soinside.com 2019 - 2024. All rights reserved.