我将observable分配给我的列表时出现以下错误:
我可能会错过一个我无法弄清楚的技巧 . 如果有人可以对此有所了解,那就太棒了 . 这是我的app-data文件:
import * as _ from 'lodash';
import {Lesson} from "../shared/model/lesson";
import {Subject, Observable, Observer} from 'rxjs';
class DataStore {
private lessons : Lesson[] = [];
private lessonsListSubject = new Subject();
public lessonsList$: Observable<Lesson[]> = this.lessonsListSubject.asObservable();
initializeLessonsList(newList: Lesson[]) {
this.lessons = _.cloneDeep(newList);
this.broadcast();
}
addLesson(newLesson: Lesson) {
this.lessons.push(_.cloneDeep(newLesson));
this.broadcast();
}
deleteLesson(deleted:Lesson) {
_.remove(this.lessons,
lesson => lesson.id === deleted.id );
this.broadcast();
}
toggleLessonViewed(toggled:Lesson) {
const lesson = _.find(this.lessons, lesson => lesson.id === toggled.id);
lesson.completed = ! lesson.completed;
this.broadcast();
}
broadcast() {
this.lessonsListSubject.next(_.cloneDeep(this.lessons));
}
}
export const store = new DataStore();
2 回答
你可以从
asObservable
转换返回值:这样,typescript会将
Observable<{}>
类型转换为Observable<Lesson[]>
您需要声明
lessonsListSubject
的类型,如下所示: