![](/img/trans.png)
[英]Modifying object at service layer in angular2: Subscription is not assignable to the type observable
[英]Type 'Subscription' is not assignable to type 'Observable<Exercise[]>'
角CLI:6.0.8
節點:8.11.3
我剛剛通過Angular Material,Angularfire和NgRx學習了Udemy-Angular(完整應用程序)。 在第72課上,聆聽值更改(of_Firestore)我有一個錯誤
export class NewTrainingComponent implements OnInit { exercises: Observable<Exercise[]>; constructor( private trainingService: TrainingService, private db: AngularFirestore) { } ngOnInit() { this.exercises = this.db .collection('availableExercises') .snapshotChanges() .pipe( map(docArray => { return docArray.map(doc => { return { id: doc.payload.doc.id, name: doc.payload.doc.data().name, duration: doc.payload.doc.data().duration, calories: doc.payload.doc.data().calories }; }); }) ).subscribe(result => { console.log(result); }); } onStartTraining(form: NgForm) { this.trainingService.startExercise(form.value.exercise); } }
錯誤TS2322:無法將“預訂”類型分配給“可觀察”類型。
錯誤TS2339:類型“ {}”上不存在屬性“名稱”。
錯誤TS2339:類型“ {}”上不存在屬性“持續時間”。
錯誤TS2339:類型“ {}”上不存在屬性“卡路里”。
該錯誤信息非常明顯。 exercises
是您定義的Observable
的類型:
exercises: Observable<Exercise[]>;
但是您可以通過ngOnInit()
方法將其分配給預訂。
您的ngOnInit()
方法應類似於以下內容(不要將其分配給exercises
):
ngOnInit() {
this.db
.collection('availableExercises')
.snapshotChanges()
.pipe(
map(docArray => {
return docArray.map(doc => {
return {
id: doc.payload.doc.id,
name: doc.payload.doc.data().name,
duration: doc.payload.doc.data().duration,
calories: doc.payload.doc.data().calories
};
});
})
).subscribe(result => {
console.log(result);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.