我正在开发一个Angular应用程序,实现一个AuthGuard类,以避免未登录的用户访问受保护的页面。下面是我做的一个在线课程:
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
import { AuthService } from './auth.service';
import 'rxjs/Rx';
import 'rxjs/add/operator/map'
import { Observable } from 'rxjs';
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService,
private router:Router) {}
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.authService.authInfo$
.map(authInfo => authInfo.isLoggedIn())
.take(1)
.do(allowed => {
if(!allowed) {
this.router.navigate(['/login']);
}
})
}
}
在我的AuthService类中,我简单地定义了这个属性:
authInfo$:Observable<boolean>;
.map(authInfo => authInfo.isLoggedIn())
怎么啦?我错过了什么?如何解决此问题?
您应该添加pipe
.pipe(map()...)
this.authService.authInfo$
.pipe(
map(authInfo => authInfo.isLoggedIn()),
take(1),
do(allowed => {
if(!allowed) {
this.router.navigate(['/login']);
}
})
) // pipe ends
我使用“angular2网页包”和“angular2/表格,可见”,但遇到错误,需要帮助。。 有一个自定义表单验证程序-- 我可以找到文件"/projection_direction/node_modules/rxjs/操作员/DebounceTime.js" 为什么会有这样的错误- 类型“Observable”上不存在属性“debouceTime”。
升级到Angular 6.0和Rxjs到6.0后,我收到以下编译错误:
嗨,我正在使用Angular 2 final和router 3.0。我想过滤从 我想做的是: 可以是instanceOf,或,但我只想要。但是我得到一个错误
我得到这个错误: 属性'toPromise'不存在于类型'观察'. any中
在Angular 2使用Http服务的文档页面上,有一个示例。 我克隆了angular2 webpack初学者项目,并自己添加了上述代码。 我导入使用 我假设属性也被导入(起作用)。查看了rxjs.beta-6的更改日志,没有提到任何关于的内容。
好吧,我已经把我的Android Sdk更新到了23&甚至Eclips ADT插件也更新到了最新版本。 > 当我用“空白活动”创建一个新的android项目时,我的Src&Layout文件夹是空的。