Javascript 可观察<;未知>;不可分配给可观察对象<;{}>;。它缺少以下属性,如名称、电子邮件、iAdmin

Javascript 可观察<;未知>;不可分配给可观察对象<;{}>;。它缺少以下属性,如名称、电子邮件、iAdmin,javascript,angular,observable,Javascript,Angular,Observable,我使用泛型对象返回observable,如果用户存在,则返回user对象,否则返回null。但在这个过程中,我得到了如下错误: observable未指定给observable。```并且它缺少以下属性 auth.service.ts 从'./models/app users'导入{AppUser}; 从“/user.service”导入{UserService}; 从'rxjs'导入{of}; 导出类身份验证服务{ 构造函数(私有userObj:UserService) 获取appUser$(

我使用泛型对象返回observable,如果用户存在,则返回user对象,否则返回null。但在这个过程中,我得到了如下错误:

observable未指定给observable。```并且它缺少以下属性

auth.service.ts

从'./models/app users'导入{AppUser};
从“/user.service”导入{UserService};
从'rxjs'导入{of};
导出类身份验证服务{
构造函数(私有userObj:UserService)
获取appUser$():可观察{
返回此.user$.pipe(
开关映射(用户=>user
?this.userObj.get(user.uid).valueChanges()
:of(空)
)
);
}
user.service.ts:

get(uid:string):AngularFireObject{
返回此.db.object('/users/'+uid);
}
app-users.ts:

导出接口AppUser{
名称:字符串;
电子邮件:字符串;
isAdmin:布尔型;
}

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

您应该这样做,通过更改返回类型。我猜您正在使用tsconfig.json中的
strict:true
选项:

get appUser$(): Observable<AppUser | null> {
  return this.user$.pipe(
    switchMap(user => user
      ? this.userObj.get(user.uid).valueChanges()
      : of(null)
    )
  );
}
get-appUser$():可观察{
返回此.user$.pipe(
开关映射(用户=>user
?this.userObj.get(user.uid).valueChanges()
:of(空)
)
);
}

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

get appUser$(): Observable<AppUser | null> {
  return this.user$.pipe(
    switchMap(user => user
      ? this.userObj.get(user.uid).valueChanges()
      : of(null)
    )
  );
}
get-appUser$():可观察{
返回此.user$.pipe(
开关映射(用户=>user
?this.userObj.get(user.uid).valueChanges()
:of(空)
)
);
}

尝试参数化
of
Observable.of(null)
@VladVidac:当我试图返回此语句时。它显示相同的错误。尝试参数化
of
Observable.of(null)
@VladVidac:当我试图返回this语句时,它显示了相同的错误。@srinivasnelamraju我已经更新了我的答案。也许问题是
this.userObj.get
是一个需要类型的泛型函数。如果不起作用,你能给我显示
this.userObj
的类型吗?还有,你如何导入de>ofoperator@SrinivasNeelamraju你应该像在我的答案中一样使用
,而不是
的可观察的.of
@SrinivasNeelamraju我已经更新了我的答案。也许问题是
this.userObj.get
是一个需要类型的泛型函数。如果不起作用,你能给我显示
this.userObj
的类型吗o、 您如何导入
operator@SrinivasNeelamraju你应该在我的回答中使用类似的
of
,而不是
Observable.of