angular - 类型'可观察的' 不可分配给类型 'Observable'
问题描述
尝试获取项目时出现以下错误:
Type 'Observable<unknown[]>' is not assignable to type 'Observable<Event[]>'.
Type 'unknown[]' is not assignable to type 'Event[]'.
Type '{}' is missing the following properties from type 'Event': code, name, password, pollCat
events.service.ts
:
import { Injectable } from '@angular/core';
import { AngularFirestore, AngularFirestoreCollection, AngularFirestoreDocument} from 'angularfire2/firestore';
import { Event } from '../models/events'
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class EventsService {
eventsCollection : AngularFirestoreCollection<Event>;
events : Observable<Event[]>;
constructor(public afs: AngularFirestore) {
this.events = this.afs.collection('Events').valueChanges();
}
getEvents()
{
return this.events;
}
}
events.ts
:
export interface Event{
code: string;
name: string;
password: string;
pollCat : string;
}
解决方案
调用方法时需要提供泛型类型collection
,而不是使用默认值unknown
:
this.events = this.afs.collection<Event>('Events').valueChanges();
// ^ here
您可以在此处阅读 TypeScript 手册中有关泛型的更多信息。
推荐阅读
- xamarin.forms - 如何在 Xamarin 表单中使用 ComboBox
- kubernetes - 如何让 Skaffold 和 Helm 图表与本地图像存储库一起使用?
- javascript - Eleventy 站点如何显示目录中的页面列表?
- java - 获取所有 @Tests 的列表(jUnit 测试)
- r - R 使用嵌套 If 语句简化大型数据集
- java - 通过java代码启动Zookeeper和Kafka
- flask - 有没有办法通过路由调用拆分烧瓶路由?
- c# - 如何将 ABB 的 PC SDK 集成到 Unity 中?
- python - 将嵌套字典展平为键列表:值对
- mysql - mysql Rand() 函数导致意外的多行结果