gpt4 book ai didi

angular - 使用 'finalize, catcherror' 运算符时出错

转载 作者:行者123 更新时间:2023-12-03 16:03:57 31 4
gpt4 key购买 nike

我正在尝试使用 Angular 大学提供的优秀示例来实现 Angular 数据表。但我坚持实现我的数据源。这是我的数据源:

import { Aircraft } from '../shared/aircraft';
import { AircraftInfoService } from './aircraft-info.service';
import { BehaviorSubject } from 'rxjs';
import { CollectionViewer, DataSource } from '@angular/cdk/collections';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/catchError';
import 'rxjs/add/operator/finalize';

export class allAircraftInfoDataSource implements DataSource<Aircraft> {

private aircraftDBSubject = new BehaviorSubject<Aircraft[]>([]);
private loadingSubject = new BehaviorSubject<boolean>(false);

public loading$ = this.loadingSubject.asObservable();

constructor(private aircraftInfoService: AircraftInfoService) {}

connect(collectionViewer: CollectionViewer): Observable<Aircraft[]> {
return this.aircraftDBSubject.asObservable();
}

disconnect(collectionViewer: CollectionViewer): void {
this.aircraftDBSubject.complete();
this.loadingSubject.complete();
}

getAircraft() {

this.loadingSubject.next(true);

this.aircraftInfoService.getAircraft().pipe(
catchError(() => **of**([])),
finalize(() => this.loadingSubject.next(false))
)
.subscribe(data => this.aircraftDBSubject.next(data));
}
}

我在 'catchError'、'of'、'finalize' 上遇到错误,第二次使用 'data' 会产生错误。这是我的编译错误:
ERROR in ../../src/app/services/aircraft-info-datasource.service.ts(31,9): error TS2552: Cannot find name 'catchError'. Did you mean 'RTCError'?
../../src/app/services/aircraft-info-datasource.service.ts(31,26): error TS2304: Cannot find name 'of'.
../../src/app/services/aircraft-info-datasource.service.ts(32,9): error TS2304: Cannot find name 'finalize'.
../../src/app/services/aircraft-info-datasource.service.ts(34,52): error TS2345: Argument of type '{}' is not assignable to parameter of type 'Aircraft[]'.
Type '{}' is missing the following properties from type 'Aircraft[]': length, pop, push, concat, and 26 more.

我以为我已经按照信中的例子去做了,但我显然遗漏了一些东西。我需要纠正什么?

谢谢.....

最佳答案

您正在导入 RxJS 5 “补丁样式”的运算符,并尝试将它们用作 RxJS 6“可管道运算符”(在 RxJS 5 中 catchError 以前也称为 catch)。

import { of } from 'rxjs';
import { catchError, finalize } from 'rxjs/operators';

有关迁移文档,请参阅:
  • https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md
  • https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
  • 关于angular - 使用 'finalize, catcherror' 运算符时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55080860/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com