Angular 为什么.map操作符不';t在没有.pipe的情况下工作(角度和角度火焰2/auth)?
我在调用AngularFireAuth的authState方法的其中一个路由中实现了一个Auth guard 我已经看到了很多类似以下的授予访问权限的示例:Angular 为什么.map操作符不';t在没有.pipe的情况下工作(角度和角度火焰2/auth)?,angular,firebase,firebase-authentication,angularfire2,auth-guard,Angular,Firebase,Firebase Authentication,Angularfire2,Auth Guard,我在调用AngularFireAuth的authState方法的其中一个路由中实现了一个Auth guard 我已经看到了很多类似以下的授予访问权限的示例: return this.afAuth.authState.map(user => { if(isNullOrUndefined(user)){ this.router.navigate(['auth/login']); return false; }else{
return this.afAuth.authState.map(user => {
if(isNullOrUndefined(user)){
this.router.navigate(['auth/login']);
return false;
}else{
return true;
}
})
但当我尝试按原样复制它时,我收到以下错误:“…属性”map“在类型“Observable”上不存在
但当我将.pipe包括在内时,它会按预期工作:
return this.afAuth.authState.pipe(map((user) => {
if(isNullOrUndefined(user)){
this.router.navigate(['auth/login']);
return false;
}else{
return true;
}
} ))
也许我应该满足于它是这样工作的,但我不明白为什么这里需要管道。有人能给我几分钟解释一下吗
非常感谢!
Nanex使用最新版本的rxjs(6),链式地图操作符已被删除。这是为了增加树震动库的能力。现在必须使用
管道
操作符
你可以读更多的书
点链的修补运算符存在以下问题:
任何导入补丁操作符的库都将为该库的所有使用者增加Observable.prototype,从而产生盲目依赖。如果图书馆取消了它们的使用,它们会在不知不觉中破坏其他所有人。使用PipeTables时,必须将所需的运算符导入到使用它们的每个文件中
直接打补丁到原型上的操作员不能通过rollup或webpack等工具“摇树”。可管道化的操作符将是,因为它们只是直接从模块中拉入的函数
任何类型的构建工具或lint规则都无法可靠地检测正在应用程序中导入的未使用的运算符。这意味着您可能会导入扫描,但停止使用它,它仍然会添加到输出包中。对于可管道操作符,如果您不使用它,lint规则可以为您拾取它
功能性成分非常棒。构建您自己的自定义操作符变得越来越容易,现在它们工作起来,看起来就像rxjs中的所有其他操作符一样。你不需要再延长可观察的距离或覆盖提升