Angular 类型';可观察<;未知>';不可分配给类型';可观察<;第[]课>';

Angular 类型';可观察<;未知>';不可分配给类型';可观察<;第[]课>';,angular,rxjs,observable,Angular,Rxjs,Observable,我使用的是Angular 8应用程序。我使用的是rxjs的可观察模式。但我在可观测线上仍然得到一个误差 当然,谷歌搜索到了这个错误。但是没有找到正确的answare 所以我强调: import { Subject, Observer, Observable } from 'rxjs'; 我有一句话: public lessonList$: Observable<Lesson[]> = this.lessonListSubject.asObservable(); 这是整个文

我使用的是Angular 8应用程序。我使用的是rxjs的可观察模式。但我在可观测线上仍然得到一个误差

当然,谷歌搜索到了这个错误。但是没有找到正确的answare

所以我强调:

import { Subject, Observer, Observable } from 'rxjs';
我有一句话:

    public lessonList$: Observable<Lesson[]> = this.lessonListSubject.asObservable();
这是整个文件:

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();









从“lodash”导入*as uuu;
从“../shared/model/Lesson”导入{Lesson};
从“rxjs”导入{Subject,Observer,Observable};
类数据存储{
私人课程:课程[]=[];
private lessonListSubject=新科目();
public lessonList$:Observable=this.lessonListSubject.asObservable();
initaliseLessonList(新列表:第[]课){
this.lessons=\ uu.clone(newList);
这个。广播();
}
添加课程(新课程:课程){
这个.lessons.push(newLesson);
这个。广播();
}
删除课程(已删除:课程){
_.remove(this.lessons,lesson=>lesson.id===deleted.id);
这个。广播();
}
切换视图(切换:课程){
//tslint:禁用下一行:无阴影变量
const-lesson=uu.find(this.lessons,lesson=>lesson.id===toggled.id);
lessource.completed=!lessource.completed;
这个。广播();
}
广播(){
this.lessonListSubject.next(u.cloneDeep(this.lessons));
}
}
export const store=新数据存储();
更换

private lessonListSubject = new Subject();

private lessonListSubject=新科目();

这样,你就有了一个
主题
,而不是
主题

鉴于你发布的代码,我们所能说的就是:阅读错误消息:它告诉你,你没有发布的代码中的wnat是错误的。是的,OK,我编辑了帖子,但我们仍然不知道
这方面的任何信息。lessonListSubject
。错误消息告诉您这就是问题所在:您无法将值
this.lessonListSubject.asObservable()
分配给lessonList$,因为它没有正确的类型。我发布了整个文件。
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();









private lessonListSubject = new Subject();
private lessonListSubject = new Subject<Lesson[]>();