ajax - HttpClient Angular 5 不发送请求

标签 ajax angular typescript httpclient angular5

我在 Angular 5 中遇到 HttpClient 的问题。HttpClient 不会在两个指定的组件上发送任何请求(我在控制台中没有看到任何 xhr 日志)。在其他组件上,一切都很好。

从组件 A 调用 ApiService POST 方法(自定义服务,其工作方式类似于 HttpClient 的包装器),但是当我从组件 B 调用此方法时 HttpClient 似乎被卡住了。

我的应用程序中有许多使用 ApiService 的组件。一切都很好地注入(inject)。我不知道出了什么问题。

---回应

ApiService.ts

@Injectable()
export class ApiService
{
    private errorListeners : Map<string, Array<(details ?: any) => any>> =
        new Map<string, Array<(details ?: any) => any>>();

    public constructor(private http: HttpClient)
    {

    }

    public post<T>(path : string, data : any, urlParams : any = null) : Observable<any>
    {
        return this.http.post<T>(`${environment.api.path}${path}`, data, {
            params: urlParams
        }).catch(this.catchErrors()).map(response => {
            if (response['Error']){
                throw response['Error'];
            }

            return response;
        });
    }

}

-- 组件

   @Component({
    selector: 'login-register-component',
    templateUrl: './register.component.html',
    styleUrls: [
        './../../assets/main/css/pages/login.css'
    ]
})
export class RegisterComponent implements OnInit, OnDestroy
{

public constructor(private route: ActivatedRoute,
                       private router: Router,
                       private userService : UserService,
                       private apiService: ApiService
    )
    {
        this.apiService.post('/some-endpoint', null, {}).subscribe(res => {
console.log(res);

});

}

即使我直接将 HttpClient 注入(inject)组件,HttpClient 也不起作用

-- 同一模块中的其他组件 示例调用:(有效)

public loginTraditionalMethod(emailAddress : string, plainPassword : string)
    {

        this.apiService.post('/auth/email', {
            email: emailAddress,
            password: plainPassword
        }, {}).subscribe(res => {
           console.log(res);
        })

    }

最佳答案

我遇到了同样的问题,订阅 http.get() 后没有 xhr 请求。这是一个忘记密码功能的请求,因此我没有连接到该应用程序。

请求被一个 http token 拦截器拦截,如果没有检测到 session ,该拦截器返回一个空的 Observable。

永远不知道,这可能对某人有帮助...

关于ajax - HttpClient Angular 5 不发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691175/

相关文章:

typescript 错误 "Cannot find name ' 需要'。并且找不到名称 'process'。”

javascript - 动态实例化一个 ng-template 并以 angular 5 创建 HTML

javascript - 我可以在对象属性上使用装饰器吗?

javascript - 如何更改fullcalendar中ajax发送的 'start'和 'end'参数?

jquery - 如何异步加载和显示数据

angular - Angular 5 中的参数化路由

angular - 如何为 AngularJS 2 编写 http 拦截器?

php - 在进度元素上显示 AJAX 上传状态

javascript - 无法在客户端从 php 执行 python 脚本

angular - Observable.subscribe() 与带有 async/await 的 Promise