Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么.map操作符不';t在没有.pipe的情况下工作(角度和角度火焰2/auth)?_Angular_Firebase_Firebase Authentication_Angularfire2_Auth Guard - Fatal编程技术网

Angular 为什么.map操作符不';t在没有.pipe的情况下工作(角度和角度火焰2/auth)?

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{

我在调用AngularFireAuth的authState方法的其中一个路由中实现了一个Auth guard

我已经看到了很多类似以下的授予访问权限的示例:

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中的所有其他操作符一样。你不需要再延长可观察的距离或覆盖提升