Ionic 3 Post Request

时间:2018-01-24 19:43:09

标签: ionic-framework ionic2 ionic3

我希望将我的register.html和我的register.ts文件链接在一起,以便向我的后端发送帖子请求。我正在创建一个寄存器屏幕,它将信息发送到我的数据库(mongoDB / Node)

我开始使用[{ngModel}],如下例所示:

 <form id="signup-form3">
    <ion-list id="signup-list2">
      <ion-item id="signup-input6">
        <ion-label>
          email
        </ion-label>
        <ion-input type="email" name="email" [(ngModel)]="email" placeholder="Email"></ion-input>
</ion-item>

但是仍然收到错误:'无法绑定到'{ngModel}',因为它不是'ion-input'的已知属性。这是在我将所有必要的导入到我的app.module.ts之后。

在我的TS文件中,我正在使用...

发送帖子请求
register() {
    let headers = new Headers();
    headers.append("Content-Type", "application/json");

    let body = {
      email: "this.email",
      password: "this.password"
    };

    this.http.post('http://localhost:3005/v1/account/register', JSON.stringify(body), {headers: headers})
      .map(res => res.json())
      .subscribe(data => {
        console.log(data);
      });
  }

不确定是否有更简单的方法,或者我使用的是错误的方式。

编辑:修正了[(ngModel)]拼写错误。现在给我错误......

“具有给定用户名的用户已经注册” - 我认为它正在向数据库发送“this.email” - 虽然当我登录时将其注销,但它正在显示该电子邮件。这是JSON.stringify的问题吗?

编辑2 :现在从我的后端收到错误:'错误:发送后无法设置标题。'

2 个答案:

答案 0 :(得分:2)

问题在于它不是[{ngModel}],而是[(ngModel)]。这应该可以解决这个问题。

修改

从身体上的""this.email移除this.password,应该是这样的:

let body = {
  email: this.email,
  password: this.password
};

答案 1 :(得分:0)

好的,我在@ChesterLaborde

的帮助下发现了这个问题

我不得不拿出.map(res =&gt; res.json())

正如@ChesterLaborde提到的那样取出Stringify - 我相信这是因为我已经把它变成了JSON,并且.map(res =&gt; res.json())试图再次这样做。我相信这是问题的根源,至少对我有用。