मुझे AuthGuard
उस उपयोग के कुछ कार्यान्वयन मिले take(1)
। अपने प्रोजेक्ट में, मैंने इस्तेमाल किया first()
।
क्या दोनों एक ही तरह से काम करते हैं?
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<boolean> | boolean {
return this.angularFire.auth.map(
(auth) => {
if (auth) {
this.router.navigate(['/dashboard']);
return false;
} else {
return true;
}
}
).first(); // Just change this to .take(1)
}
}
first()
औरtake()
सामान्य रूप में एक ही है, जो मुझे लगता है कि स्पष्ट है, केवल कि कर रहे हैंfirst()
औरtake(1)
एक ही हैं। अगर आपको लगता है कि अभी भी कोई अंतर है तो मुझे आपके जवाब से यकीन नहीं होगा?