Ошибка выполнения: this.userprovider.userSignup (...). Подписаться не является функцией в Ionic - PullRequest
0 голосов
/ 29 июня 2018

Ниже находится signup.ts

Я хотел вставить данные в MongoDB. Я получаю сообщение об ошибке типа

this.userprovider.userSignup (...). Подписка не является функцией.

Пожалуйста, помогите мне решить ошибку

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, ViewController } from 'ionic- 
angular';
import { UserProvider } from '../../providers/user/user';

@IonicPage()
@Component({
  selector: 'page-signup',
  templateUrl: 'signup.html',
})

export class SignupPage {

  private registerUrl = 'http://localhost:8080/signup';
  username: string;
  email: string;
  password: string;
  repassword: string;

  constructor(public navCtrl: NavController, public navParams: NavParams, public viewCtrl: ViewController, public userprovider: UserProvider) {
  }

  signup(): void {

    let review = {
      username: this.username,
      email: this.email,
      password: this.password,
      repassword: this.repassword
    };
    console.log(review);

    this.userprovider.userSignup(review).subscribe(

      res => {
        console.log(res);
      },
      error => {
        //this.loading = false;
        console.log(error);
      });
  }
}

Ниже приведен провайдер / user.ts этот файл является файлом провайдера. Я использовал подписаться здесь. но это создает проблемы .. так что решение

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/catch';
import { BehaviorSubject } from 'rxjs/Rx';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class UserProvider {
  data: any;
  private registerUrl = 'http://localhost:8080/signup';

  constructor(public http: Http) {
    this.data = null;
  }

  userSignup(review): any {

    return this.http.post(this.registerUrl, review)
      .subscribe(res => {
        console.log(res.json());
      });
  }
}

Как вы видите, я пытался устранить ошибку по-своему. Кто-нибудь, кто знает, как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Здесь есть два вопроса,

(i) Вы можете подписаться только на наблюдаемое, изменить свой тип возврата как,

userSignup(review):Observable<any>

(ii) Вы должны использовать подписку только внутри своего компонента, а не внутри метода обслуживания. Так что измените свой метод как,

userSignup(review):Observable<any>{
  return this.http.post(this.registerUrl, review);
}
0 голосов
/ 29 июня 2018

Просто верните ответ от сервиса. Поскольку вы подписываетесь на наблюдаемое из компонента, нет необходимости подписывать его из службы.

userSignup(review):Observable<any>{

  return this.http.post(this.registerUrl, review);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...