Angular2 Promise。然后没有定义

时间:2017-02-25 06:48:41

标签: angular express mean-stack mean angular-promise

我正在尝试使用 Angular 2 构建MEAN应用程序。
流动就像是 login.component.ts处理事件调用auth.service.ts的 getLogin 函数
auth.service.ts在url / login上对Prom服务器进行承诺。

但无法继续并收到此错误

"EXCEPTION: Error in http://localhost:4000/app/components/account/login.component.html:4:0 caused by: this.authService.getLogin.then is not a function" core.umd.js:3064:13

ORIGINAL EXCEPTION: this.authService.getLogin.then is not a function core.umd.js:3066:17

Object { _view: Object, _nodeIndex: 10, _tplRow: 4, _tplCol: 0 } core.umd.js:3074:17

Error: Error in http://localhost:4000/app/components/account/login.component.html:4:0 caused by: this.authService.getLogin.then is not a function zone.js:958:21

login.component.ts

import {Component} from '@angular/core';
import {AuthService} from '../../services/auth.service';
@Component({
    moduleId: module.id,
    selector: 'login',
    templateUrl: './login.component.html'
})
export class LogInComponent {
        info:String="";
        username:String;
        password:String;
        constructor(private authService:AuthService){

        }

        login(event){
          console.log("event call");
          event.preventDefault();
          var newAccount={
            username:this.username,
            password:this.password
          };
          this.authService.getLogin.then(data => this.info = dat);
        }

}

auth.service.ts

import {Injectable} from '@angular/core';
import {Http, Headers} from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class AuthService {
    constructor(private http:Http){
    }
    getLogin(newAccount): Promise<any> {
      return this.http.get("/log")
                 .toPromise()
                 .then(response => response.json().data)
                 .catch(this.handleError);
    }
}

用于测试的快速输出

router.get('/log',  function(req, res) {
      res.json({"status":"okay"});
});

检查快递服务器,它给出了正确的json输出

我做错了什么?

还有一件事是什么时候使用subscribe vs map vs。没理解 差异?(对于这个链接可能很有用)

尝试2天。如果需要,会发布任何代码。

1 个答案:

答案 0 :(得分:-1)

login.component.ts 中,您刚刚调用了getLogin。它应该是功能 getLogin()for .then正常工作,如auth.service.ts中所定义。

应该是

      this.authService.getLogin().then(data => this.info = dat);

而不是

      this.authService.getLogin.then(data => this.info = dat);