2 votes

Angular 2, typecript post to API model is null

J'ai téléchargé le projet suivant : http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api . Je l'exécute sur VS2015 et IIS express. Le projet fonctionne bien mais je veux appeler l'API avec Angular 2.

J'ai configuré mon projet dans Visual Studio Code et j'ai créé un projet en Angular 2 et TypeScript. Lorsque j'essaie d'envoyer un message à la méthode API nommée Register, les valeurs sont nulles ?

Mon service Visual Studio Code (Angular2)

import { Injectable } from 'angular2/core';

import { Account } from '../account/Account';
import { RegisterBindingModel } from '../account/RegisterBindingModel';
import {Http, Response, Headers, RequestOptions} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/Rx';

@Injectable()
export class AccountService {
    constructor(private _http: Http) {

    }

    createAccount(account: Account): Observable<string> {
        console.log('accountService.createAccount');
        let body = JSON.stringify({ account });
        console.log('T1' + body);

        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });

return this._http.post('https://localhost:44305/api/Account/Register', body, options)
                    .map(this.extractData)
                    .catch(this.handleError); 

Erreur de navigateur et valeurs d'affichage : BrowserError

Erreurs de l'API du serveur : Error1 Error2_In_API_Method Error2_In_API_Method

Je peux effectuer une opération GET, mais toutes mes opérations POST sont NULL ?

0voto

Benjamin Points 178

J'ai trouvé la solution suivante, qui n'est pas très efficace, mais qui fonctionne : j'affecte les objets de la classe de compte à un nouvel objet. Ensuite, je stringifie le nouvel objet et je l'affiche :

    createAccount(account: Account): Observable<string> {

        var obj = { Email: account.Email, Password: account.Password, ConfirmPassword: account.ConfirmPassword };

            let headers = new Headers({ 'Content-Type': 'application/json' });
            let options = new RequestOptions({ headers: headers });
            let body = JSON.stringify(obj);

            return this._http.post('https://localhost:44305/api/Account/Register',  body, options)
                                .map(this.extractData)
                                .catch(this.handleError);
}

Pour la première erreur que j'ai eue sur l'API, je l'ai résolue en changeant ce qui suit :

Request.GetOwinContext().GetUserManager<ApplicationUserManager>();

Pour

HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();

Ensuite, je pourrais obtenir le GetOwinContext() à partir du POST

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X