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