Javascript 可观察<;未知>;不可分配给可观察对象<;{}>;。它缺少以下属性,如名称、电子邮件、iAdmin
我使用泛型对象返回observable,如果用户存在,则返回user对象,否则返回null。但在这个过程中,我得到了如下错误: observable未指定给observable。```并且它缺少以下属性 auth.service.tsJavascript 可观察<;未知>;不可分配给可观察对象<;{}>;。它缺少以下属性,如名称、电子邮件、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$(
从'./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
的类型吗?还有,你如何导入的,而不是的可观察的.of
@SrinivasNeelamraju我已经更新了我的答案。也许问题是this.userObj.get
是一个需要类型的泛型函数。如果不起作用,你能给我显示this.userObj
的类型吗o、 您如何导入
operator@SrinivasNeelamraju你应该在我的回答中使用类似的of
,而不是Observable.of