【发布时间】:2019-12-10 18:28:46
【问题描述】:
我正在尝试引用 component.ts 文件中文档的其中一个字段。
只要我明确声明let day = "Sunday",下面的代码就可以工作。
由于 this.meter 中有一个字段“day”,我希望能够改为声明 let day = this.meter.day。我知道我必须以某种方式订阅this.meter,但我不知道如何订阅。
我浏览了所有文档,完全不知所措,非常困惑,因为这应该是一个相对简单的操作。
谢谢。
import { Component, OnInit, ViewChild, ElementRef, HostListener, AfterViewInit } from '@angular/core';
import { AngularFirestore, AngularFirestoreDocument, AngularFirestoreCollection, AngularFirestoreCollectionGroup } from '@angular/fire/firestore';
import { Observable, Subscriber } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
export interface Meter { meter: string; units: number; lastupdated: string; year: string; month: string; day: string; monthday: string}
@Component({
selector: 'app-meter',
templateUrl: './meter.component.html',
styleUrls: ['./meter.component.scss']
})
export class MeterComponent implements OnInit {
meterId: string;
private meterDoc: AngularFirestoreDocument<Meter>;
meter: Observable<Meter>;
dailydata: Observable<any>;
todayinweek: Observable<any>;
pastweek: Observable<any>;
day: string;
constructor(
private route: ActivatedRoute, private db: AngularFirestore, private afs:AngularFirestore) {
this.meterId = this.route.snapshot.paramMap.get('id');
this.meter = this.afs.doc<Meter>(`meters/${this.meterId}`).valueChanges();
}
ngOnInit() {
**//let day = this.meter.day;**
let day = "Sunday";
this.dailydata = this.db.collection('meters').doc<any>(this.meterId).collection('dailydata').doc(day).valueChanges();
this.todayinweek = this.db.collection('meters').doc<any>(this.meterId).collection(('meterdata'), ref=> ref.where("day", "==", day).limit(10)).valueChanges();
this.pastweek = this.db.collection('meters').doc<any>(this.meterId).collection(('meterdata'), ref=> ref.orderBy("date", "desc").limit(7)).valueChanges();
}
}
我已尝试关注Get field from Firestore document,但它对我不起作用。我收到一条错误消息,提示“'Observable' 类型上不存在属性 'then'”
【问题讨论】:
标签: angular google-cloud-firestore angularfire2