恐怕我哪儿也去不了。我买了一个教程,但 angular 是第 4 版。我现在有 12 版。 那时我对 googel 了解很多,但现在我什至无法使用 Google。
import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import firebase from 'firebase/app'
import { Observable, of } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { map, switchMap } from 'rxjs/operators';
import { UserService } from './user.service';
import { EMPTY } from "rxjs";
@Injectable({
providedIn: 'root'
})
export class AuthService {
user1: Observable<any>;
constructor(
private userService: UserService,
private afAuth: AngularFireAuth,
private route: ActivatedRoute) {
this.user1 = afAuth.authState;
}
login(){
let returnUrl: any = this.route.snapshot.queryParamMap.get('returnUrl' || '/');
localStorage.setItem('returnUrl', returnUrl);
this.afAuth.signInWithRedirect(new firebase.auth.GoogleAuthProvider());
}
logout(){
this.afAuth.signOut();
}
get appUser1(): Observable<any>{
return this.user1
.pipe(switchMap(user => this.userService.get(user.uid).valueChanges()))
}
}
登录有效但注销无效。如果我按下注销按钮(在浏览器中),它会显示错误: 错误类型错误:无法读取 null 的属性“uid”
在教程中他说。我需要更改“.pipe”以修复此错误:
.pipe(switchMap(user => {
if (user) return this.userService.get(user.uid);
return EMPTY;
}));
(“EMPTY”在教程“Observable.of(null)”中,但我发现它不再实际了) 几个小时前我在“user =>”处有一个编译错误,但我不记得是怎么解决的。但无论如何。注销也不能以这种方式工作。
在 Google 上,我发现了很多关于此主题的信息,但我不明白/它对我不起作用。为什么我不能在 else 情况下返回这个空?