Observable is not assignable to type interface 问题 angular

Observable is not assignable to type interface problem in angular

我有以下界面和模型。现在我想在调用 API 后获得一个可观察值。代码如下:

export class RegistrationListResultModel extends TaskResultModel {
    Users!: UserRegisterModel[];
}

export class UserRegisterModel {
    Id?: number;
    FirstName?: string;
    LastName?: string;
    Email?: string;
    Mobile?: string;
    OrgId?: number;
    Username?: string;
    Password?: string;
    PhotoUrl?: string;
    IsActive?: boolean;
    TimeZoneId?:string;
}

interface SearchResultUserRegistrationInfo {
    userLists: UserRegisterModel[];
    total: number;
}

我有以下函数调用 API 和 returns 结果作为可观察结果。

private _search(): Observable<SearchResultUserRegistrationInfo> {
        return this.service.get<RegistrationListResultModel>(`${this.apiPATH}lists`).pipe(map(data => {
            const {
                sortColumn,
                sortDirection,
                pageSize,
                page,
                searchFirstName,
                searchLastName,
                searchEmail,
                searchMobile,
                searchUsername
            } = this._state;

            let allMemberLists: UserRegisterModel[] = [];

            if (data) {
                allMemberLists = data.Users;

                // 1. sort              
                let userLists = sort(allMemberLists, sortColumn, sortDirection);

                const total = userLists.length;

                // 3. paginate
                userLists = userLists.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize);

                return { userLists, total };
            }
            else {
                // In case data is null
                return null
            }
        }));
    }

但我收到以下错误:

Type 'Observable<{ userLists: UserRegisterModel[]; total: number; } | null>' is not assignable to type 'Observable'. Type '{ userLists: UserRegisterModel[]; total: number; } | null' is not assignable to type 'SearchResultUserRegistrationInfo'. Type 'null' is not assignable to type 'SearchResultUserRegistrationInfo'.ts(2322)

谁能帮我解决错误

只需更改您的 _search 方法的签名:

private _search(): Observable<SearchResultUserRegistrationInfo | null> { ... }