Return Observable From Result Of Observable
up vote
0
down vote
favorite
I am very new to RxJS, so I'm not quite sure what question I should be asking here. I have a service that returns an Observable boolean:
@Injectable
export class UserService {
private isLoggedInSubject = new ReplaySubject<boolean>(1);
public isLoggedIn = this.isLoggedInSubject.asObservable();
}
In an Angular 6 route guard I passing on that value to prevent access to a route:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isLoggedIn.pipe(take(1));
}
How can I take this value, and return an Observable based on the result? I have tried multiple variations of something like this, but seem to be missing some fundamental concept as this has to be a fairly common thing.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const isLoggedIn = this.userService.isLoggedIn.pipe(take(1));
return isLoggedIn.[???something????](x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
}
});
}
angular rxjs observable
add a comment |
up vote
0
down vote
favorite
I am very new to RxJS, so I'm not quite sure what question I should be asking here. I have a service that returns an Observable boolean:
@Injectable
export class UserService {
private isLoggedInSubject = new ReplaySubject<boolean>(1);
public isLoggedIn = this.isLoggedInSubject.asObservable();
}
In an Angular 6 route guard I passing on that value to prevent access to a route:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isLoggedIn.pipe(take(1));
}
How can I take this value, and return an Observable based on the result? I have tried multiple variations of something like this, but seem to be missing some fundamental concept as this has to be a fairly common thing.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const isLoggedIn = this.userService.isLoggedIn.pipe(take(1));
return isLoggedIn.[???something????](x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
}
});
}
angular rxjs observable
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am very new to RxJS, so I'm not quite sure what question I should be asking here. I have a service that returns an Observable boolean:
@Injectable
export class UserService {
private isLoggedInSubject = new ReplaySubject<boolean>(1);
public isLoggedIn = this.isLoggedInSubject.asObservable();
}
In an Angular 6 route guard I passing on that value to prevent access to a route:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isLoggedIn.pipe(take(1));
}
How can I take this value, and return an Observable based on the result? I have tried multiple variations of something like this, but seem to be missing some fundamental concept as this has to be a fairly common thing.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const isLoggedIn = this.userService.isLoggedIn.pipe(take(1));
return isLoggedIn.[???something????](x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
}
});
}
angular rxjs observable
I am very new to RxJS, so I'm not quite sure what question I should be asking here. I have a service that returns an Observable boolean:
@Injectable
export class UserService {
private isLoggedInSubject = new ReplaySubject<boolean>(1);
public isLoggedIn = this.isLoggedInSubject.asObservable();
}
In an Angular 6 route guard I passing on that value to prevent access to a route:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isLoggedIn.pipe(take(1));
}
How can I take this value, and return an Observable based on the result? I have tried multiple variations of something like this, but seem to be missing some fundamental concept as this has to be a fairly common thing.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const isLoggedIn = this.userService.isLoggedIn.pipe(take(1));
return isLoggedIn.[???something????](x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
}
});
}
angular rxjs observable
angular rxjs observable
edited Nov 8 at 13:50
martin
39.8k1180124
39.8k1180124
asked Nov 8 at 13:19
Joe
3,45922638
3,45922638
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
You just chain it with more operators:
return this.userService.isLoggedIn.pipe(
take(1),
concatMap(x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
})
},
);
Btw, you don't even need to be returning Observable.of
. You can use just map
and return eg. false
.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
You just chain it with more operators:
return this.userService.isLoggedIn.pipe(
take(1),
concatMap(x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
})
},
);
Btw, you don't even need to be returning Observable.of
. You can use just map
and return eg. false
.
add a comment |
up vote
1
down vote
accepted
You just chain it with more operators:
return this.userService.isLoggedIn.pipe(
take(1),
concatMap(x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
})
},
);
Btw, you don't even need to be returning Observable.of
. You can use just map
and return eg. false
.
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
You just chain it with more operators:
return this.userService.isLoggedIn.pipe(
take(1),
concatMap(x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
})
},
);
Btw, you don't even need to be returning Observable.of
. You can use just map
and return eg. false
.
You just chain it with more operators:
return this.userService.isLoggedIn.pipe(
take(1),
concatMap(x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
})
},
);
Btw, you don't even need to be returning Observable.of
. You can use just map
and return eg. false
.
answered Nov 8 at 13:24
martin
39.8k1180124
39.8k1180124
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53208600%2freturn-observable-from-result-of-observable%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown