6
Angular'da yeniyim, true/false döndüren bir işlevi uygulamam gerekiyor, canActivate muhafazasındaki dönüşü kullanacağım, ancak bu işlev http.get tarafından bir api tüketiyor, iletişim eşzamansız olduğu gibi, bu işlev her zaman FALSE döndürür, çünkü http.get henüz işlemdedir.Angular2 - canActivate'e abone ile boolean dönüş
Benim sınıf bekçi:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url: string = state.url;
if (this.loginService.isLoggedIn()) {
return true;
}
this.loginService.redirectUrl = url;
this.router.navigate(['login']);
return false;
}
ve fonksiyon isLoggedIn()
isLoggedIn() {
let logged: boolean = false;
this.http.get('api/values', this.httpService.headers())
.map((res: Response) => {
logged = res.json();
});
return logged;
}
ben çok soru okumak, ama cevap buldu yok.
sayesinde Takımı, ama bu şekilde benim api demiyorlar. eğer değiştirirseniz: this.http.get ('api/değerleri', this.httpService.headers()) döndürür. subscribe (res => res.json()) benim api'mdir, ancak res.json() isn fonksiyonun değeri olarak geri döndürülür, aboneliğin sonucunu nasıl döndürürüm işlevi olarak – Rit
cevabımı düzenledim. Haritada() ben değer vermedim. Şimdi çalışmalı. Abone olmadığında Gözlemlenemeyen aboneliği() çağırmayın. – kit
AFAIK hala, ilk olaydan sonra gözlemlenebilir kapanacak şekilde '.first()' veya '.take (1)' eklemeniz gerekir. Aksi halde yönlendirici sonsuza kadar bekler. –