首页 > 解决方案 > 错误 TS2304:找不到名称“db”。在火力地推物体时

问题描述

我正在尝试使用 firebase 推送对象,其中 angular 将充当前端。
组件.html

<h3>Adding an object</h3>
<input type="text" (keyup.enter)="addCourse(course)" #course>

组件.ts

import { Component, OnDestroy } from '@angular/core';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { Observable, of, Subscription } from 'rxjs';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  title = 'FirebaseDemo';
  // courses: any[];

  courses$;
  course$;
  author$;
  todos$: AngularFireList<any>;
  // subscription : Subscription;

  constructor(db: AngularFireDatabase) {
    // code to read the courses.
    db.list('/course')
      .valueChanges()
      .subscribe((inp) => {
        this.courses$ = inp;
        console.log(this.courses$);
      });
  }
  addCourse(value: string) {
    db.list('/course/').set('4', value);
  }
}

这里 addCourse(value) 函数中的最后一个 db 实例抛出错误,称为找不到名称 db。
如何从构造函数中访问 db 变量或如何将对象推送到 firebase?

标签: javascriptangularfirebaseangularfire2

解决方案


在构造函数之外,您可以使用 this.db 访问 db。请在您的 addCourse 功能中尝试以下更改并验证..

addCourse(value: string) {
this.db.list('/course/').set('4', value);}

还对构造函数进行更改以使数据库公共/私有,如:

constructor(public db: AngularFireDatabase) 

推荐阅读