将Typescript / Angular 6 / Firebase / webpack用于基本CRUD给出了如何解决'TypeError:“类构造函数必须使用| new |来调用”的问题。

时间:2019-07-09 01:21:12

标签: typescript firebase-realtime-database webpack angular6 rxjs6

我正在尝试通过Angular 6和Typescript在firebase中进行基本的CRUD操作。我正在使用Webpack捆绑它。启动应用程序时,不会引发任何错误,但是当我尝试将其保存到Firebase实时数据库时,我遇到了“如何修复'TypeError:“类构造函数必须使用| new |来调用”。

这是我第一次使用Firebase和angularfire2。关于Angularfire2官方文档中的CRUD实现,我发现所做的工作没有太大的区别。我也尝试将浏览器从Mozilla切换到Chrome,但是问题似乎与浏览器无关。我想知道它是否与rxjs有关,但是我已经运行了 $npm install rxjs-compat 它也没有解决!

user.service.ts


import { AngularFireDatabase, FirebaseObjectObservable} from 'angularfire2/database';
import { Injectable } from '@angular/core';
import * as firebase from 'firebase';
import { AppUser } from './models/app-user';


@Injectable({
  providedIn: 'root'
})
export class UserService {

  constructor(private db: AngularFireDatabase) {}

  save(user: firebase.User) {
    this.db.object('/users/' + user.uid).update({
      name: user.displayName,
      email: user.email
    })
    .catch(error => console.log(error));
  }

  get(uid:string): FirebaseObjectObservable<AppUser>{
    return this.db.object('/users/' + uid);
  }
}

app.component.ts


import { UserService } from './user.service';
import { Router } from '@angular/router';
import { AuthService } from './auth.service';
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private userService: UserService, private auth: AuthService, router: Router){
    auth.user$.subscribe(user => {
      if (user) {
        userService.save(user);
        let returnUrl = localStorage.getItem('returnUrl');
        router.navigateByUrl(returnUrl);
      }
    });

  }
}

预期结果: save(user)函数更新Firebase实时数据库上的信息,然后重新路由到上一页。

实际结果: 登录时,您将重定向回到登录页面,数据库上没有任何更新,并引发以下错误:

enter image description here

0 个答案:

没有答案