Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 对状态更新的级联调用_Angular_Redux_Rxjs_Ngrx - Fatal编程技术网

Angular 对状态更新的级联调用

Angular 对状态更新的级联调用,angular,redux,rxjs,ngrx,Angular,Redux,Rxjs,Ngrx,关于此方法的几个问题: 这种架构有什么通用的、众所周知的名字,我可以搜索吗?(不容易找到) 我面临的问题是我有一个状态,即 我的目的是在用户更改路由器(即localhost/server/srvname)时按需加载详细信息 换句话说,细节是在细节组件的ngOnInit中获取的 但当用户直接输入url(localhost/server/srvname)时,它将跳过以前通常加载服务器甚至AppState数据的组件。我在AppState.servers中有null,无法更新状态 如何以良好的方式处理此

关于此方法的几个问题:

  • 这种架构有什么通用的、众所周知的名字,我可以搜索吗?(不容易找到)
  • 我面临的问题是我有一个状态,即
  • 我的目的是在用户更改路由器(即localhost/server/srvname)时按需加载详细信息 换句话说,细节是在细节组件的ngOnInit中获取的

    但当用户直接输入url(localhost/server/srvname)时,它将跳过以前通常加载服务器甚至AppState数据的组件。我在AppState.servers中有null,无法更新状态

    如何以良好的方式处理此类装载。我应该手动处理吗

    getDetails(server: string) {
     this.loadServer(server); // load server before details
     this.loadDetauls(server);
     this.updateAppState();
    }
    
    或者将属性放入模型中,执行ORM的某种命令


    还是有好的模式或众所周知的方法?或者ngrx处理这样的事情?

    您可以使用路由器结构来制作父/子组件,并通过这种方式将每个组件应负责的责任分开

    例如,您的应用程序组件将始终首先加载,因此它可以负责通过在其OnInit周期上执行服务来加载初始配置,然后加载为您要加载的路由定义的组件

    如果您喜欢在模块中分离,您可以创建一个带有结构化wouter的服务器模块来加载组件中的初始服务,然后创建子组件来加载详细信息

    对于模块方法,路由器将类似于:

    const routes: Routes = [
         {
            path: '',
            component: ServerComponent,
            children: [
              {
                path: 'details',
                loadChildren: () => import('./components/server-details/server-details.module').then(m => m.ServerDetailsModule)
              },
            ]
          },
        ];
    
        @NgModule({
          imports: [RouterModule.forChild(routes)],
          exports: [RouterModule]
        })
       export class ServerRoutingModule { }
    
    
    const routes: Routes = [
         {
            path: '',
            component: ServerComponent,
            children: [
              {
                path: 'details',
                loadChildren: () => import('./components/server-details/server-details.module').then(m => m.ServerDetailsModule)
              },
            ]
          },
        ];
    
        @NgModule({
          imports: [RouterModule.forChild(routes)],
          exports: [RouterModule]
        })
       export class ServerRoutingModule { }