GithubHelp home page GithubHelp logo

Router Plugin about store HOT 4 CLOSED

ngxs avatar ngxs commented on August 15, 2024 7
Router Plugin

from store.

Comments (4)

amcdnl avatar amcdnl commented on August 15, 2024

Started on this here: https://stackblitz.com/edit/ngxs-router?file=app%2Frouter.store.ts

from store.

xmlking avatar xmlking commented on August 15, 2024

@amcdnl is this how you intend us to implement RouterState ?

I don't understand the role of constructor in xyzState . does it have any special way to access state?

import {Router, NavigationEnd, ActivatedRoute} from '@angular/router';
import {filter, map} from 'rxjs/operators';
import {State, Action, Store, StateContext, NgxsModule} from 'ngxs';
import {Injectable, NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';


export class UpdateRouteModel {
    constructor(public readonly payload: RouteModel) {
    }
}

export interface RouteModel {
    data: any;
    path: string;
}

@State<RouteModel>({
    defaults: {
        data: {},
        path: ""
    }
})
export class RouterState {

    constructor(private store: Store, private _router: Router, private activatedRoute: ActivatedRoute) {
        this._router.events
            .pipe(
                filter(event => event instanceof NavigationEnd),
                map(() => this.activatedRoute),
                map(route => {
                    while (route.firstChild) route = route.firstChild;
                    return route;
                })
            )
            .subscribe((event: any) => {

                const {data, path} = event.routeConfig;

                this.store.dispatch(new UpdateRouteModel({data, path}))
            });
    }

    @Action(UpdateRouteModel)
    update({getState, setState}: StateContext<RouteModel>, {payload} : UpdateRouteModel) {
        setState({
            ...payload
        })
    }

}

from store.

xmlking avatar xmlking commented on August 15, 2024

@amcdnl I have MenuState store that needs to fetch its default state from backend. State’s constructor is the ideal palace to implement this logic ? If so , is there a shortcut to set default state within the constructor ? Dispatching initial setState from constructor doesn’t make sense to me.

from store.

amcdnl avatar amcdnl commented on August 15, 2024

Here is a rough draft of this - https://gist.github.com/amcdnl/1c935e9773242bd61a5e86fce9baf3ea

from store.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.