title: take(1) vs first()
body: <p>I found a few implementation of <code>AuthGuard</code>s that use <code>take(1)</code>. In my project, I used <code>first()</code>.</p>
  
  <p>Do both work the same way?</p>
  
  <pre><code>import 'rxjs/add/operator/map';
  import 'rxjs/add/operator/first';
  import { Observable } from 'rxjs/Observable';
  
  import { Injectable } from '@angular/core';
  import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
  import { AngularFire } from 'angularfire2';
  
  @Injectable()
  export class AuthGuard implements CanActivate {
  
      constructor(private angularFire: AngularFire, private router: Router) { }
  
      canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable&lt;boolean&gt; | boolean {
          return this.angularFire.auth.map(
              (auth) =&gt;  {
                  if (auth) {
                      this.router.navigate(['/dashboard']);
                      return false;
                  } else {
                      return true;
                  }
              }
          ).first(); // Just change this to .take(1)
      }
  }
  </code></pre>