这是一个服务文件:
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 <{}, {} >>'类型
我不明白您为什么给我这个错误,感谢您的帮助。
答案 0 :(得分:0)
您的signup
函数可能存在一些问题。在Angular 6中,不再需要服务的map(res => res.json())
部分。另外,我认为您可能复制/粘贴错误,因为该函数存在一些语法错误(缺少括号或.
运算符?)
signup(formSignup) {
return this.http.post(`${this.BASE_URL}/api/signup`, formSignup)
.catch(this.handleError);
}