Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax HttpClient 5不发送请求_Ajax_Angular_Typescript_Httpclient_Angular5 - Fatal编程技术网

Ajax HttpClient 5不发送请求

Ajax HttpClient 5不发送请求,ajax,angular,typescript,httpclient,angular5,Ajax,Angular,Typescript,Httpclient,Angular5,我在Angular 5中遇到HttpClient问题。HttpClient不会在两个指定组件上发送任何请求(我在控制台中看不到任何xhr日志)。在其他部件上,一切正常 从组件a调用ApiService POST方法(定制服务,其工作方式类似于HttpClient的包装器),但当我从组件B调用此方法时 HttpClient似乎已冻结 我的应用程序中有许多组件使用ApiService。一切都很好。我不知道怎么了 ---回应 ApiService.ts @Injectable() export cla

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

从组件a调用ApiService POST方法(定制服务,其工作方式类似于HttpClient的包装器),但当我从组件B调用此方法时 HttpClient似乎已冻结

我的应用程序中有许多组件使用ApiService。一切都很好。我不知道怎么了

---回应

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;
        });
    }

}
}))

即使我直接将HttpClient注入组件,HttpClient也无法工作

   @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);
--同一模块中的其他组件 示例调用:(它有效)


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

http令牌拦截器正在拦截该请求,如果未检测到会话,该拦截器将返回一个空的可观测值


永远不知道,这可能会帮助某人…

了解一些方法:服务中的http调用,以及服务中的服务调用方式components@David我编辑了post,您如何调用另一个组件中的服务?您能发布组件A和B的调用吗?@David我添加了一个调用服务方法的代码示例。在组件中,我使用map()而不是调用subscribe()。我在上面的帖子中的示例代码中也犯了一个错误,我没有复制代码,我重写了它,过了一会儿,我发现我在原始代码中犯了一个错误。因此,上面的代码是正确的,似乎正在工作。很抱歉给您添麻烦,但谢谢您的帮助。我花了三个小时才看到这个愚蠢的姑娘谢谢你这个善良的陌生人!这正是我需要的!这个“http令牌拦截器”在哪里?在应用程序中,还是在API服务器上?你能发布一些代码吗?令牌拦截器是客户端的,看起来像这样:如果我们没有经过身份验证,下面的代码会阻止任何请求被调度:
if(!this.session.isAuthenticated()&&&!this.session.isFetching()){this.session.dispatchSessionLost();return Observable.empty();}
}
public loginTraditionalMethod(emailAddress : string, plainPassword : string)
    {

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

    }