【发布时间】:2021-11-07 12:06:39
【问题描述】:
我想从一个或多个 Observable 数组中返回一个 Observable 对象。 getTodoById() 我尝试使用管道和地图运算符返回。 错误消息:
输入'Observable
' 不能输入 'Observable'。输入“待办事项 | undefined 不可分配给类型“Todo”。 ts(2322)
我尝试分配“?”签名,但它不是很有用。也许我做错了。
这是我当前的代码。
我试过 Observable
待办事项:
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable, of, Subscription, pipe } from 'rxjs';
import { map } from 'rxjs/operators';
import { FilterBy } from '../models/filterBy.model';
import { SortBy } from '../models/sortBy.model';
import { Todo } from '../models/todo.model';
// this is BehaviorSubject - Can get .next
private _todos$ = new BehaviorSubject<Todo[]>([])
// this is an Observable - we CANNOT do .next.
// It acts like a getter - You can list to it's changes
// this makes a good separation!
public todos$ = this._todos$.asObservable();
public getById(id: string): Observable<Todo> {
return this.todos$.pipe(map(todos=> todos.find(todo => todo._id === id)))
}
待办事项模型:
export interface Todo {
_id: string,
title:string,
date:Date,
isDone:boolean,
importance:number
}
【问题讨论】:
-
可观察的
-
没有帮助。添加:Observable
作为 getVyId @MikeOne 的返回类型 -
Array.prototype.find()返回找到的项目或undefined。更改函数的返回类型应该可以解决。更改后您是否收到其他错误? -
你能试试
.filter()而不是map and find吗? -
@BizzyBob - 更改返回类型后我得到了确切的错误(添加未定义)
标签: angular rxjs angular2-observables rxjs-observables