Browse Source

feat: add a reload parameter to AddReplaceableComponent

pull/4741/head
Arman Ozak 6 years ago
parent
commit
bb6e1a11fb
  1. 5
      npm/ng-packs/packages/core/src/lib/actions/replaceable-components.actions.ts
  2. 21
      npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts

5
npm/ng-packs/packages/core/src/lib/actions/replaceable-components.actions.ts

@ -5,5 +5,8 @@ import { ReplaceableComponents } from '../models/replaceable-components';
*/ */
export class AddReplaceableComponent { export class AddReplaceableComponent {
static readonly type = '[ReplaceableComponents] Add'; static readonly type = '[ReplaceableComponents] Add';
constructor(public payload: ReplaceableComponents.ReplaceableComponent) {} constructor(
public payload: ReplaceableComponents.ReplaceableComponent,
public reload?: boolean,
) {}
} }

21
npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts

@ -1,8 +1,9 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { State, Action, StateContext, Selector, createSelector } from '@ngxs/store'; import { Router } from '@angular/router';
import { Action, createSelector, Selector, State, StateContext } from '@ngxs/store';
import snq from 'snq';
import { AddReplaceableComponent } from '../actions/replaceable-components.actions'; import { AddReplaceableComponent } from '../actions/replaceable-components.actions';
import { ReplaceableComponents } from '../models/replaceable-components'; import { ReplaceableComponents } from '../models/replaceable-components';
import snq from 'snq';
@State<ReplaceableComponents.State>({ @State<ReplaceableComponents.State>({
name: 'ReplaceableComponentsState', name: 'ReplaceableComponentsState',
@ -28,10 +29,12 @@ export class ReplaceableComponentsState {
return selector; return selector;
} }
constructor(private router: Router) {}
@Action(AddReplaceableComponent) @Action(AddReplaceableComponent)
replaceableComponentsAction( async replaceableComponentsAction(
{ getState, patchState }: StateContext<ReplaceableComponents.State>, { getState, patchState }: StateContext<ReplaceableComponents.State>,
{ payload }: AddReplaceableComponent, { payload, reload }: AddReplaceableComponent,
) { ) {
let { replaceableComponents } = getState(); let { replaceableComponents } = getState();
@ -48,5 +51,15 @@ export class ReplaceableComponentsState {
patchState({ patchState({
replaceableComponents, replaceableComponents,
}); });
if (reload) {
// TODO: Create a shared service for route reload and more
const { shouldReuseRoute } = this.router.routeReuseStrategy;
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
this.router.navigated = false;
await this.router.navigateByUrl(this.router.url).catch();
this.router.routeReuseStrategy.shouldReuseRoute = shouldReuseRoute;
}
} }
} }

Loading…
Cancel
Save