【发布时间】:2019-06-29 21:11:36
【问题描述】:
我正在尝试从 mongodb 获取一些数据,并不断收到此错误:
“OperatorFunction”类型上不存在属性“订阅”
//app.component.ts
import { Component } from '@angular/core';
import {FormGroup, FormControl, Validators, FormsModule} from '@angular/forms';
import {CommonService} from './common.service';
import {Http, Response, Headers, RequestOptions} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';
import { from } from 'rxjs';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(private newService: CommonService) {
}
Repdata;
valbutton = "Save";
ngOnInit() {
this.newService.GetProcesses().subscribe(data => this.Repdata = data);
}
}
//common.service.ts
import { Injectable } from '@angular/core';
import {Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { map, tap } from 'rxjs/operators';
import 'rxjs/add/operator/do';
import 'rxjs/Rx';
import { catchError } from 'rxjs/operators';
@Injectable()
export class CommonService {
constructor(private http: Http) { }
GetProcesses(){
return this.http.get('http://localhost:4000/getProcesses/')
.pipe(map((response: Response) => response.json())),
catchError(error => Observable.of(null))
}
}
“OperatorFunction”类型上不存在属性“订阅”
【问题讨论】:
-
你使用的是哪个版本的 Angular 和 RXJS?
-
你缺少这个')'来关闭你的管道
-
@GerardoJaramillo 提出一个重要问题。
HttpModule和Http自 Angular 2.x 以来就没有使用过,相反,您可以在 Angular 4.x+ 中使用HttpClientModule和HttpClient。使用 RxJS 5+,你真的不再需要像import 'rxjs/add/operator/do';这样的静态导入,你可以像import { map, tap } from 'rxjs/operators';这样命名导入。 -
您好,感谢您的回复,我目前正在使用 angular 2.4.1 和 rxjs 6.5.2,是否应该升级到更新版本的 angular?
-
取决于您的应用程序的复杂程度以及您是否有时间检查所有内容,如果您问我应该。但如果您有任何疑问,请访问此页面update.angular.io/#2.1:8.0。
标签: angular