javascript - “未知”类型上不存在属性“id/name/duration/calories”
问题描述
import { NgForm } from '@angular/forms';
import { Exercise } from './../exercise.model';
import { TrainingService } from './../training.service';
import { Component, OnInit, ViewChild } from '@angular/core';
import { AngularFirestore } from 'angularfire2/firestore';
import { Observable, Subscriber } from 'rxjs';
import 'rxjs/add/operator/map';
@Component({
selector: 'app-new-training',
templateUrl: './new-training.component.html',
styleUrls: ['./new-training.component.css'],
})
export class NewTrainingComponent implements OnInit {
exercises: Observable<Exercise[]>;
constructor(
private trainingService: TrainingService,
private db: AngularFirestore
) {}
ngOnInit(): void {
this.exercises = this.db
.collection('availableExercises')
.snapshotChanges()
.map((docArray) => {
return docArray.map((doc) => {
return {
id: doc.payload.doc.data().id,
name: doc.payload.doc.data().name,
duration: doc.payload.doc.data().duration,
calories: doc.payload.doc.data().calories,
};
});
});
}
onStartTraining(form: NgForm) {
this.trainingService.startExercise(form.value.exercise);
}
}
id、姓名、持续时间和卡路里有问题。它们都带有下划线,错误提示:所有四个类型的“未知”类型都不存在属性。所以不确定是什么问题。我也试过
id: doc.payload.doc['id'],
name: doc.payload.doc['name'],
duration: doc.payload.doc['duration'],
calories: doc.payload.doc['calories'],
也不行。在 Maximilian Schwarzmuller 的教程之后重复。会给予任何帮助。
解决方案
答案是将函数的下一行ngOnInit
从:
return docArray.map((doc) => {
进入:
return docArray.map((doc: any) => {
这将允许您在编译期间避免类型检查。正如这里提到的
推荐阅读
- python - 如何在 python 中更快地计算多个点组合之间的最小地理距离?
- javascript - 如何在 Ionic React 中通过 onChange 调用传递切换状态?
- ubuntu - jupyter notebook 打不开:拒绝访问
- swift - collectionView 不 scrollToItem - swift - 以编程方式
- angular - 在 scrollDispatcher Angular Material 上滚动的方法总是返回 undefined
- r - 试图协调 R Shiny 反应值中的日志记录和 textOutput
- android - 工具栏正在覆盖 Recyclerview
- r - 在R中重复向量化矩阵的最佳方法?
- javascript - 获取异步变量返回空
- java - Java WebLookAndFeel 不显示 JXTable 的列控制弹出菜单