I've added Angularfire to my Angular project and am using the authentication. Everything is work however, my Resolve Navigation Guard is stopping activation of the component when the resolve is an error.
Ref: https://blog.thoughtram.io/angular/2016/10/10/resolving-route-data-in-angular-2.html
QUESTION:
How can I make my dashboard
route not activate unless auth has been resolved AND the resolve does not catch an error?
This @Injectable
is the AuthGuard
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { myFirebaseAuthConfig } from "./auth";
import { AngularFire } from "angularfire2";
@Injectable()
export class CanActivateViaAuthGuard implements Resolve<any> {
constructor(private af: AngularFire) {}
resolve() {
return this.af.auth.login(myFirebaseAuthConfig)
.then(data => {
console.log(data, 'data');
return data;
})
.catch(err => {
console.log(err, 'err');
return err;
});
}
}
The Module:
@NgModule({
imports: [
routing,
AngularFireClientModule,
],
providers: [CanActivateViaAuthGuard],
declarations: [AdminComponent, LoginComponent, SignupComponent],
exports: [AdminComponent],
})
export class AdminRouteModule {}
The Route
import { Routes, RouterModule } from "@angular/router";
import { AdminComponent } from "./admin.component";
import { ModuleWithProviders } from "@angular/core";
import { LoginComponent } from "../login/login.component";
import { SignupComponent } from "../signup/signup.component";
import { CanActivateViaAuthGuard } from "../firebase/auth.service";
export const routerConfig: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full' },
{
path: 'dashboard',
component: AdminComponent,
resolve: [CanActivateViaAuthGuard],
},
{path: 'login', component: LoginComponent},
{path: 'signup', component: SignupComponent},
];
export const routing: ModuleWithProviders = RouterModule.forChild(routerConfig);