'subscribe'属性在'OperatorFunction <{},{}>'类型中不存在

时间:2018-08-15 17:51:56

标签: typescript angular6 subscribe

这是一个服务文件:

import { Injectable } from '@angular/core';
import { Http, Response } from "@angular/http";
import {map, catchError} from 'rxjs/operators';
import { Observable } from "../../node_modules/rxjs";

@Injectable({
  providedIn: 'root'
})
export class SessionService {
  BASE_URL = "http://localhost:3000"
  constructor(private http: Http) { }

  handleError(e) {
  return Observable.throw(e.json().message);
}

signup(formSignup) {
  return this.http.post(`${this.BASE_URL}/api/signup`, formSignup)
  .pipe(map(res => res.json())),
  catchError(this.handleError);
}

在此处显示此错误的订阅方法

import { Component, OnInit } from '@angular/core';
import { SessionService } from '../../services/session.service';
import { Router } from '@angular/router'

@Component({
  selector: 'app-signup-form',
  templateUrl: './signup-form.component.html',
  styleUrls: ['./signup-form.component.css']
})
export class SignupFormComponent implements OnInit {

  constructor(
  private sessionService:SessionService, 
  private router:Router) { }

  ngOnInit() {
  }

  sendSignupForm(myForm){
    this.sessionService.signup(myForm.value)
      .subscribe(()=> this.router.navigate(['private']))
    }
   }

我有一个服务文件,我必须在其中调用api以获取api,当我订阅该方法时,它会给我以下错误:

  

subscribe' property does not exist in the OperatorFunction <{},   {} >>'类型

我不明白您为什么给我这个错误,感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的signup函数可能存在一些问题。在Angular 6中,不再需要服务的map(res => res.json())部分。另外,我认为您可能复制/粘贴错误,因为该函数存在一些语法错误(缺少括号或.运算符?)

signup(formSignup) {
  return this.http.post(`${this.BASE_URL}/api/signup`, formSignup)
                  .catch(this.handleError);
}