我如何在 firebase 函数中使用路由器对象?

how can i use router object inside firebase function?

如果有人能帮我解决这个问题,我将不胜感激。我无法在 firebase 函数中使用路由器。

import { Component, OnInit } from '@angular/core';
import { FirebaseService } from '../../services/firebase.service';
import * as firebase from 'firebase';
import { Router } from '@angular/router';

@Component({
   selector: 'app-listings',
   templateUrl: './listings.component.html',
   styleUrls: ['./listings.component.css']
})

export class ListingsComponent implements OnInit {
  listings: any;
  constructor(
    private firebaseService: FirebaseService,
    public router: Router
  ) {

这是firebase我无法使用路由器的功能。

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        // User is signed in.
        console.log('loggedIn');
      } else {
        // No user is signed in.
        console.log('not loggedIn');

控制台似乎也工作正常。

        this.router.navigate(['/']);
      }
    });
  }

  ngOnInit() {
    this.firebaseService.getListings().subscribe(listings => {
      this.listings = listings;
      console.log(listings);
    });
  }

}

尝试使用箭头函数访问 this 关键字。

firebase.auth().onAuthStateChanged(user => {
    if (user) {
        // User is signed in.
        console.log('loggedIn');
    } else {
        // No user is signed in.
        console.log('not loggedIn');
        this.router.navigate(['/']);
    }
});

有了 AngularFire 的认证...

constructor(
    private af: AngularFire,
    private firebaseService: FirebaseService,
    public router: Router
) {
    this.af.auth.take(1).subscribe(user => {
        if (user) {
            // User is signed in.
            console.log('loggedIn');
        } else {
            // No user is signed in.
            console.log('not loggedIn');
            this.router.navigate(['/']);
        }
    });
}