对于您导入的每个RxJS运算符,您现在应该从'rxjs /运算符'导入并使用管道运算符`

时间:2018-01-26 19:31:12

标签: angular rxjs

  • 我正在从角度2升级到角度5
  • 我使用了以下链接并进行了更新。 https://angular-update-guide.firebaseapp.com/
  • 逐一完成每个步骤,不知道如何更新此步骤 对于您导入的每个RxJS运算符,您现在应该从'rxjs /运算符'导入并使用管道运算符。
  • 我在我的代码库中使用了这样的Rxjs但不知道如何更改它

https://hastebin.com/rezelikuku.cs

<!-- language-all: lang-or-tag-here -->

import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Rx';

@Injectable()
export class playerService {
    public tabvaluechange;
    public copiedEvent;
    private searchBtnEvent = new Subject<any>();
    private changeEvent = new Subject<any>();

2 个答案:

答案 0 :(得分:2)

以下是当前新导入语句的示例:

import { Observable } from 'rxjs/Observable';
import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
import { of } from 'rxjs/observable/of';

import { map, catchError, tap } from 'rxjs/operators';

他们使用新的lettable(有时称为可管理)运算符。你像这样使用它们:

getProducts(): Observable<IProduct[]> {
    return this.http.get<IProduct[]>(this.productsUrl)
                    .pipe(
                        tap(data => console.log(JSON.stringify(data))),
                        catchError(this.handleError)
                    );
}

因此,不是使用流畅的语法链接它们,而是使用Observable的管道方法并传入每个运算符来执行。

注意:新操作符不能与JavaScript关键字冲突,因此do现在是tapcatch现在是catchErrormap仍为map

答案 1 :(得分:1)

import { Observable } from 'rxjs/Rx'; 

应该是:

import { Observable } from 'rxjs/Observable';

和运营商可能是这样的:(取决于您需要的运营商)

import { map, switchMap } from "rxjs/operators";