Angular 2服务订阅了两次

时间:2016-12-04 20:22:58

标签: angular angular-services angular-http

我刚开始使用Angular 2的第一个项目,而且我遇到了服务问题。

我在提交表单时调用了一个http服务,但是当我提交表单时,http请求会执行两次。

login.component.html

<form method="post" (ngSubmit)="login()">
    <input type="email" [(ngModel)]="user.email" id="email" name="email" placeholder="Email" class="input input--block input--text-center" required >
    <input type="password" [(ngModel)]="user.password" name="password" placeholder="Password" id="passord" class="input input--block input--text-center" required>
    <input type="submit" value="Connect" class="btn btn--block">
</form>

login.component.ts

login() {
    this.service.login(this.user.email, this.user.password)
        .subscribe( res => {
            if (res == null) {
                alert("Fail");
            } else {
                res.password = null;
                this.user = res;
                alert("Welcome "+this.user.firstname+"!");
        }
    });
}

user.service.ts

login(email:string, password:string): Observable<User> {
    let CryptoJS = require("cryptojs");
    let sha512 = CryptoJS.algo.SHA512.create();
    sha512.update(password);
    password = sha512.finalize().toString();
    return this.http.post(`${this.baseUrl}/user/login`, 
        {email: email.trim(), password: password.trim()}, 
        {headers: this.headers })
    .map(res => res.json())
    .catch(this.handleError);
}

我添加了一些console.log("test");来检查哪个方法被调用两次,看起来没有两次调用的方法,只是我可以在网络浏览器的网络控制台中看到的HTTP请求

0 个答案:

没有答案