angular - 防止在不使用 RouteReuseStrategy 的情况下破坏路由上的组件状态

标签 angular angular2-routing angular2-services angular-routing

我研究了这个主题,发现 RouterReuseStrategy 是一个解决方案,但我不能使用 RouterReuse 如何在不使用 RouterReuse 解决方案的情况下防止破坏组件状态

请考虑投票,因为这将有助于获得答案。

//应用程序.module.ts

const appRoutes: Routes = [
  { path: 'registration', component: RegistrationComponent },
  { path: 'users', component: ListComponent },
  { path: '', component: HomeComponent },
  { path: '**', component: PageNotFoundComponent }
];

@NgModule({
  declarations: [
    AppComponent,
    Capitalize,
    FilterPipe,
    ListComponent,
    RegistrationComponent,
    PageNotFoundComponent,
    HomeComponent
  ],
  imports: [
    BrowserModule,
    ReactiveFormsModule,
    FormsModule,
    RouterModule.forRoot(appRoutes)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

//app.component.html

<section class="container">
  <nav class="navbar navbar-default">
    <div class="container-fluid">
      <div>    
        <a class="navbar-brand" routerLink="/">Brand</a>
      </div>  
      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
          <li><a routerLink="/">Home</a></li>
          <li><a routerLink="/registration">Registration</a></li>
          <li><a routerLink="/users">Users</a></li>                    
        </ul>        
      </div>
    </div>
  </nav>
</section>
<router-outlet></router-outlet>

stackblitzLink

最佳答案

您可以将状态存储在某个级别上提供的服务中,该级别不会在路由上重新创建,例如在 AppModule 或 AppComponent 中。

此外,如果导航仅更改路线参数,但保持在同一路线上,则不会重新创建组件,因此您不会丢失状态。但这仅适用于特定用例。

关于angular - 防止在不使用 RouteReuseStrategy 的情况下破坏路由上的组件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630630/

相关文章:

angular - 将任意元数据添加到 FormControl

angular - 服务事件不会正确影响模板

angular - 如何在 Angular 2 中重新加载相同 URL 的组件?

node.js - Npm 测试找不到 socket.io.js 文件

javascript - Angular7:模板解析错误:找不到管道 'titlecase'/'slice'

typescript - 使用 Angular2 从 url 中检索哈希片段

javascript - 使用来自 Angular 中服务器的数据修补 FormArrays 值的问题

javascript - 解决 promise angular2 : Property 'includes' does not exist on type '[]'

Angular Pipe 删除 double

javascript - 无需导航即可从组件向 Angular 2 路由添加参数