ing
This commit is contained in:
parent
949e16993f
commit
985a4c2013
|
@ -24,7 +24,9 @@
|
||||||
"@angular/router": "^5.2.1",
|
"@angular/router": "^5.2.1",
|
||||||
"@ngrx/core": "^1.2.0",
|
"@ngrx/core": "^1.2.0",
|
||||||
"@ngrx/effects": "^5.0.1",
|
"@ngrx/effects": "^5.0.1",
|
||||||
|
"@ngrx/router-store": "^5.0.1",
|
||||||
"@ngrx/store": "^5.0.0",
|
"@ngrx/store": "^5.0.0",
|
||||||
|
"@ngrx/store-devtools": "^5.0.1",
|
||||||
"core-js": "^2.5.3",
|
"core-js": "^2.5.3",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
"rxjs": "^5.5.6",
|
"rxjs": "^5.5.6",
|
||||||
|
|
|
@ -1,13 +1,24 @@
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
import { NgModule } from '@angular/core';
|
import { StoreModule } from '@ngrx/store';
|
||||||
|
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
|
||||||
|
import {
|
||||||
|
StoreRouterConnectingModule,
|
||||||
|
RouterStateSerializer,
|
||||||
|
} from '@ngrx/router-store';
|
||||||
|
import { EffectsModule } from '@ngrx/effects';
|
||||||
|
|
||||||
|
import { environment } from '../environments/environment';
|
||||||
|
|
||||||
import { AppRoutingModule } from './app-routing.module';
|
import { AppRoutingModule } from './app-routing.module';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
|
|
||||||
import { MaterialModule } from './commons/ui/material/material.module';
|
import { MaterialModule } from './commons/ui/material/material.module';
|
||||||
import { AuthComponent } from './pages/auth/auth.component';
|
import { SimpleRouterStateSerializer } from './commons/router/state/serializer/simple-router-state-serializer';
|
||||||
|
import { reducers } from './app.reducers';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
@ -17,9 +28,42 @@ import { AuthComponent } from './pages/auth/auth.component';
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
|
StoreModule.forRoot(reducers),
|
||||||
|
/**
|
||||||
|
* @ngrx/router-store keeps router state up-to-date in the store.
|
||||||
|
*/
|
||||||
|
StoreRouterConnectingModule.forRoot({
|
||||||
|
/*
|
||||||
|
They stateKey defines the name of the state used by the router-store reducer.
|
||||||
|
This matches the key defined in the map of reducers
|
||||||
|
*/
|
||||||
|
stateKey: 'router',
|
||||||
|
}),
|
||||||
|
/**
|
||||||
|
* Store devtools instrument the store retaining past versions of state
|
||||||
|
* and recalculating new states. This enables powerful time-travel
|
||||||
|
* debugging.
|
||||||
|
*
|
||||||
|
* To use the debugger, install the Redux Devtools extension for either
|
||||||
|
* Chrome or Firefox
|
||||||
|
*
|
||||||
|
* See: https://github.com/zalmoxisus/redux-devtools-extension
|
||||||
|
*/
|
||||||
|
StoreDevtoolsModule.instrument({
|
||||||
|
name: 'overFlow WebApp DevTools',
|
||||||
|
logOnly: environment.production,
|
||||||
|
}),
|
||||||
|
EffectsModule.forRoot([]),
|
||||||
MaterialModule,
|
MaterialModule,
|
||||||
],
|
],
|
||||||
providers: [],
|
providers: [
|
||||||
|
/**
|
||||||
|
* The `RouterStateSnapshot` provided by the `Router` is a large complex structure.
|
||||||
|
* A custom RouterStateSerializer is used to parse the `RouterStateSnapshot` provided
|
||||||
|
* by `@ngrx/router-store` to include only the desired pieces of the snapshot.
|
||||||
|
*/
|
||||||
|
{ provide: RouterStateSerializer, useClass: SimpleRouterStateSerializer },
|
||||||
|
],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
})
|
})
|
||||||
export class AppModule { }
|
export class AppModule { }
|
||||||
|
|
6
src/app/app.reducers.ts
Normal file
6
src/app/app.reducers.ts
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import { combineReducers, ActionReducer, ActionReducerMap, MetaReducer } from '@ngrx/store';
|
||||||
|
|
||||||
|
import { AppState } from './app.state';
|
||||||
|
|
||||||
|
export const reducers: ActionReducerMap<AppState> = {
|
||||||
|
};
|
3
src/app/app.state.ts
Normal file
3
src/app/app.state.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
export interface AppState {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
import { RouterStateSerializer } from '@ngrx/router-store';
|
||||||
|
import { RouterStateSnapshot, Params } from '@angular/router';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The RouterStateSerializer takes the current RouterStateSnapshot
|
||||||
|
* and returns any pertinent information needed. The snapshot contains
|
||||||
|
* all information about the state of the router at the given point in time.
|
||||||
|
* The entire snapshot is complex and not always needed. In this case, you only
|
||||||
|
* need the URL and query parameters from the snapshot in the store. Other items could be
|
||||||
|
* returned such as route parameters and static route data.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface RouterStateURL {
|
||||||
|
url: string;
|
||||||
|
params: Params;
|
||||||
|
queryParams: Params;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SimpleRouterStateSerializer implements RouterStateSerializer<RouterStateURL> {
|
||||||
|
serialize(routerState: RouterStateSnapshot): RouterStateURL {
|
||||||
|
let route = routerState.root;
|
||||||
|
|
||||||
|
while (route.firstChild) {
|
||||||
|
route = route.firstChild;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { url, root: { queryParams } } = routerState;
|
||||||
|
const { params } = route;
|
||||||
|
|
||||||
|
// Only return an object including the URL, params and query params
|
||||||
|
// instead of the entire snapshot
|
||||||
|
return { url, params, queryParams };
|
||||||
|
}
|
||||||
|
}
|
|
@ -172,6 +172,14 @@
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@ngrx/effects/-/effects-5.0.1.tgz#cf970a6b8e2f3d3647e795e7040e09a2e7d157ed"
|
resolved "https://registry.yarnpkg.com/@ngrx/effects/-/effects-5.0.1.tgz#cf970a6b8e2f3d3647e795e7040e09a2e7d157ed"
|
||||||
|
|
||||||
|
"@ngrx/router-store@^5.0.1":
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ngrx/router-store/-/router-store-5.0.1.tgz#db872327bb958a2ebf296734c97de68672ec628a"
|
||||||
|
|
||||||
|
"@ngrx/store-devtools@^5.0.1":
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ngrx/store-devtools/-/store-devtools-5.0.1.tgz#f1bf5c54d4b2a512afd970e8114057b44e0d3c16"
|
||||||
|
|
||||||
"@ngrx/store@^5.0.0":
|
"@ngrx/store@^5.0.0":
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-5.0.0.tgz#483a955ea99a63ee083675ce0596d505e5501747"
|
resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-5.0.0.tgz#483a955ea99a63ee083675ce0596d505e5501747"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user