相关疑难解决方法(0)

Angular 2 - 在单个observable上处理多个订阅

我正在开发一个Angular 2应用程序,需要一些关于如何干净地处理身份验证错误的指导.

我的最终目标是能够集中处理每个Http请求的身份验证错误(特别是401和403).

我发现这个问题对于让我开始非常有帮助,但是我仍然坚持为我的自定义Http实现返回的每个observable注册我的错误处理程序的正确方法.

以下是我目前正在使用的示例:

import { Injectable } from 'angular2/core';
import { Http, ConnectionBackend, Request, RequestOptions, RequestOptionsArgs, Response } from 'angular2/http';

import { Observable } from 'rxjs/Observable';


@Injectable()
export class ClauthHttp extends Http {

    constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
        super(backend, defaultOptions);
    }

    get(url: string, options ? : RequestOptionsArgs): Observable < Response > {
        var response = super.get(url, options);

        return this._handleSecurityResponse(response);
    }

    /*
    Other overrides omitted for brevity...
    */

    private _handleSecurityResponse(response: Observable < Response …
Run Code Online (Sandbox Code Playgroud)

javascript rxjs angular2-http angular

27
推荐指数
1
解决办法
1万
查看次数

Angular2 HTTP - 如何理解后端服务器已关闭

我正在开发一个前端,它使用服务器提供的JSON服务.

我很高兴使用Angular2的HTTP,我可以通过.catch()运算符捕获错误.

如果我发现与特定服务相关的问题(例如,服务未由服务器定义),则catch()运营商会收到Response状态404,我可以轻松管理该情况.

另一方面,如果服务器完全关闭,则catch()操作员会收到带有状态代码的响应,200并且没有与问题原因相关的特定标志或文本(即整个服务器已关闭).在控制台上,我看到angular(http.dev.js)写了一条消息,net::ERR_CONNECTION_REFUSED但我不知道如何在我的代码中做一些类似的事情(即理解正在发生的事情并做出适当的反应).

任何帮助,将不胜感激.

angular2-http

14
推荐指数
2
解决办法
6247
查看次数

如何使Angular 2发送所有请求作为application/x-www-form-urlencoded

我和Angular 1有类似的问题,所以我理解如何实现,只是我错过了最后一步.

就像上次一样,为我们的应用做后端的人接受类型的请求,application/x-www-form-urlencoded就像Angular 1一样,Angular 2也会发送类型application/json.

我用ng1做的是在配置中我修改了http提供程序以在每个请求的主体上运行urlencoded.

我在ng2中看到有一个https://angular.io/docs/ts/latest/api/http/BaseRequestOptions-class.html 这个BaseRequestOptions类,我认为这个类只是为了这个唯一的文档有点not there所以我不是确定如何正确实现这一点(我也是TypeScript的新手).

我如何提供这个,以便我的每个post请求都urlencoded在最后发送(我也希望函数在主体上运行,以便它实际上变为urlencoded).

另外:为什么没有一个更简单的选项,因为到现在我可以看到ASP.Net和Flask(所以我想其他许多人)application\json默认不支持?

编辑:我已经创建了一个自定义函数,我在POST体中发送的每个对象上使用,但我希望有一个更简单,更通用的解决方案.

import { URLSearchParams } from 'angular2/http';

export function urlEncode(obj: Object): string {
    let urlSearchParams = new URLSearchParams();
    for (let key in obj) {
        urlSearchParams.append(key, obj[key]);
    }
    return urlSearchParams.toString();
}
Run Code Online (Sandbox Code Playgroud)

然后我就像使用它一样

this.http.post('http://localhost:5000/user/auth/login', urlEncode(data))
Run Code Online (Sandbox Code Playgroud)

typescript angular

10
推荐指数
1
解决办法
9798
查看次数

如何在Angular2中正确使用依赖注入?

我在解决DI问题方面取得了成功.我已经阅读了一些教程并获得了jist但是在使用我的自定义服务制作了一些嵌套的DI后,事情开始崩溃了.

有人可以解释何时使用useFactory而不是useClass?我已经看过ng2文档,我已经看过这些例子,但是我无法将它们映射到我的问题中.目前我的引导程序看起来像这样:

bootstrap(
    App,
    [
        FORM_PROVIDERS,
        ROUTER_PROVIDERS,
        HTTP_PROVIDERS,
        provide(LocationStrategy, { useClass: PathLocationStrategy }),
        provide(RequestOptions, { useClass: DefaultRequestOptions }),
        provide(MsgService, { useClass: MsgService }),
        provide(HttpAdvanced, { useFactory: (MsgService, HTTP_PROVIDERS) => new HttpAdvanced(MsgService, HTTP_PROVIDERS), deps: [MsgService, HTTP_PROVIDERS] }),
        provide(AuthService, { useFactory: (HttpAdvanced) => new AuthService(HttpAdvanced), deps: [HttpAdvanced, HTTP_PROVIDERS, MsgService] }),
        provide(FormBuilderAdvanced, { useFactory: (FormBuilder, HttpAdvanced) => new FormBuilderAdvanced(FormBuilder, HttpAdvanced), deps: [FormBuilder, HttpAdvanced] }),
        provide(MsgServiceInternal, { useClass: MsgServiceInternal })
    ]
);
Run Code Online (Sandbox Code Playgroud)

我的最新一期是:

EXCEPTION: Error during instantiation of AuthService! (HeaderBar -> AuthService).
ORIGINAL EXCEPTION: …
Run Code Online (Sandbox Code Playgroud)

dependency-injection angular

6
推荐指数
1
解决办法
3215
查看次数

Angular2:捕获角度异常

如果Angular2遇到内部异常,它将不会记录到控制台.如何检测以下异常?

EXCEPTION: Error during instantiation of MainFormComponent!.
ORIGINAL EXCEPTION: TypeError: Cannot set property 'crashMeMaybe' of undefined
ORIGINAL STACKTRACE:
... stacktrace ...
ERROR CONTEXT:
... context object ...
Run Code Online (Sandbox Code Playgroud)

有没有可用的订阅?这样的文件在哪里?

exception angular

4
推荐指数
1
解决办法
8056
查看次数

Angular2中的响应拦截器

我将许多HTTP请求发送到服务器,并且服务器返回每个请求带有新访问令牌的响应(可能在标题或正文中).

有没有办法在它完成之前或之后处理所有响应,比如某些后端框架中的请求的中间件?

angular-http angular2-services angular

2
推荐指数
1
解决办法
3423
查看次数