我尝试构建一个使用角8登录的auth方法,但是vs代码显示了错误.属性'of‘在“可观察类型”上不存在
顺便说一句,这段代码是一位朋友寄给我的,他在大学的最后一部作品中实现了这段代码。
auth .ts
private _baseUrl = environment.baseUrl;
private _userData: UserData;
token: string;
constructor(private http: HttpClient) {
}
getUserData(): Observable<UserData> {
if (this._userData && this._timeCheck(this._userData.timestamp, 5)) {
return Observable.of(this._userData).pipe(delay(0));
} else {
this._userData = null;
}
if (!this._userData) {
let userData$=new Subject<UserData>();
this.http.get<UserData>(`${this._baseUrl}auth/login`).subscribe(this._buildObserver(userData$));
return userData$.asObservable();
}else{
return Observable.of(new UserData()).pipe(delay(0));
}
}
isAuthenticated(): Observable<boolean> {
if(this.getToken()) {
let subject = new Subject<boolean>();
/*this.getUserData().subscribe(
(userData:UserData)=>subject.next(true),
error=>subject.next(false),
()=>subject.complete());*/
return Observable.of(true);
}else{
return Observable.of(false);
}
}发布于 2019-10-22 13:06:54
您的代码中有一个逻辑错误。即使getUserData()函数得到一个错误,也将返回一个真值,这是错误的。相反,您应该在条件检查之后返回subject值,即
isAuthenticated(): Observable<boolean> {
// Declare subject here
let subject = new Subject<boolean>();
// Initialize it as false
subject.next(false);
if(this.getToken()) {
// Set subject value based on getUserData()
}
return subject.asObservable();
}发布于 2019-10-22 13:05:18
您需要导入它:
角>= 6.0.0
使用RxJS 6.0.0角变化量6.0.0
import { of } from 'rxjs';并使用它,如:return of(false)
https://stackoverflow.com/questions/58504922
复制相似问题