无法将Observable <unknown>分配给Observable <{}>。它缺少以下属性,例如name,email,isAdmin

时间:2019-11-08 12:18:01

标签: javascript angular observable

我将返回可观察到的通用对象,如果用户存在则返回用户对象,否则返回null。但是在此过程中,我收到类似以下错误:

  

observable <-unknown->没有分配给observable <{}>。```它缺少以下属性。

auth.service.ts

import { AppUser } from './models/app-users';
import { UserService } from './user.service';
import { of } from 'rxjs';

export class AuthService {

constructor(private userObj:UserService) 

 get appUser$(): Observable<AppUser | null> {
    return this.user$.pipe(
      switchMap(user => user
        ? this.userObj.get<AppUser>(user.uid).valueChanges()
        : of(null)
      )
    );
  }




user.service.ts:

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

app-users.ts

export interface AppUser {
    name: string;
    email: string;
    isAdmin: boolean;
}

如果用户不存在,如何返回null?

1 个答案:

答案 0 :(得分:4)

您应该通过更改返回类型来做到这一点。我猜您在tsconfig.json中使用了strict: true选项:

get appUser$(): Observable<AppUser | null> {
  return this.user$.pipe(
    switchMap(user => user
      ? this.userObj.get(user.uid).valueChanges()
      : of(null)
    )
  );
}