【发布时间】:2020-01-10 10:09:54
【问题描述】:
我正在使用 Angular 8 应用程序。我正在使用 rxjs 的 Observable 模式。但是我仍然在 Observable 行上遇到错误。
当然是在谷歌上搜索错误。但没有找到正确的答案。
所以我导入了这个:
import { Subject, Observer, Observable } from 'rxjs';
我有这行:
public lessonList$: Observable<Lesson[]> = this.lessonListSubject.asObservable();
但我仍然收到此错误:
Type 'Observable<unknown>' is not assignable to type 'Observable<Lesson[]>'.
Type '{}' is missing the following properties from type 'Lesson[]': length, pop, push, concat, and 26 more.ts(2322)
错误会消失。
谢谢
ok,这是界面课程:
export interface Lesson {
id: number;
description: string;
duration?: string;
completed?: boolean;
}
这是整个文件:
import * as _ from 'lodash';
import { Lesson } from '../shared/model/lesson';
import { Subject, Observer, Observable } from 'rxjs';
class DataStore {
private lessons: Lesson[] = [];
private lessonListSubject = new Subject();
public lessonList$: Observable<Lesson[]> = this.lessonListSubject.asObservable();
initaliseLessonList(newList: Lesson[]) {
this.lessons = _.clone(newList);
this.broadCast();
}
addLesson(newLesson: Lesson) {
this.lessons.push(newLesson);
this.broadCast();
}
deleteLesson(deleted: Lesson) {
_.remove(this.lessons, lesson => lesson.id === deleted.id);
this.broadCast();
}
toggleView(toggled: Lesson) {
// tslint:disable-next-line: no-shadowed-variable
const lesson = _.find(this.lessons, lesson => lesson.id === toggled.id);
lesson.completed = !lesson.completed;
this.broadCast();
}
broadCast() {
this.lessonListSubject.next(_.cloneDeep(this.lessons));
}
}
export const store = new DataStore();
【问题讨论】:
-
鉴于您发布的代码,我们只能说:阅读错误消息:它告诉您 wnat 在您未发布的代码中是错误的。
-
是的,好的,我编辑帖子
-
我们仍然对
this.lessonListSubject一无所知。错误消息告诉您问题出在:您无法将值this.lessonListSubject.asObservable()分配给 courseList$,因为它没有正确的类型。 -
我发布了整个文件。
标签: angular rxjs observable