Reputation: 11
i try build a auth method for login using Angular 8, but the vs code show me error... Property 'of' does not exist on type 'typeof Observable'
btw This code was sent to me by a friend to implement in his final proyect for the university
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);
}
}
Upvotes: 0
Views: 96
Reputation: 5121
There is a logical mistake in your code. Even if the getUserData()
function gets an error you will be returning a true value, which is wrong. Instead you should be returning the subject value after the conditional check i.e.
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();
}
Upvotes: 0
Reputation: 1454
You need to import it:
for Angular >= 6.0.0
uses RxJS 6.0.0 Angular Changelog 6.0.0
import { of } from 'rxjs';
And use it like: return of(false)
Upvotes: 2