Angular7 路由器正在刷新整个屏幕
Angular7 router is refreshing entire screen
Angular7 路由器在路由更改时刷新整个页面。从 app.component.html 我尝试直接在这个页面上设置路由器插座,并将其包装在 app.component.html[= 上的另一个控制器中29=] 页。无论每次路线更改时使用哪个选项,都会重新加载整个屏幕。我只希望路由器插座区域重新加载。我以前在路由方面从未遇到过这个问题。
来自 app.component.html 我已经尝试将路由器插座直接放在此页面上,并将其包装在 [= 上的另一个控制器中35=] 页。无论每次路线更改时使用哪个选项,都会重新加载整个屏幕。
<!--Header Component-->
<app-header></app-header>
<div class="container-fluid" style="height:100%;">
<div class="row" style="height:100%">
<div class="col-2 sideNavContainer">
<!--Side Nav Component-->
<app-side-nav></app-side-nav>
</div>
<div class="col-10 main-container">
<!--<div class="container-fluid">-->
<div class="row dark-blue-bar" style="width: 100%;">
<!--Tab Bar Component-->
<app-tab-bar style="width: 100%"></app-tab-bar>
</div>
<div class="row" style="padding-left: 10px; margin-left: 0px">
<!--Main Content Component-->
<router-outlet></router-outlet>
</div>
<!--</div>-->
</div>
</div>
</div>
app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './core/dashboard/dashboard.component';
import { CodeSetOverviewComponent} from './core/code-set-overview/code-set-overview.component';
const routes: Routes = [
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' },
{ path: 'dashboard', component: DashboardComponent},
{ path: 'codeSetOverview', component: CodeSetOverviewComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
侧导航LINK示例
<ul class="nav flex-column side-nav">
<li class="nav-item">
<a class="nav-link active" href="dashboard" rel="no-refresh"><i class="fas fa-columns" style="color:white; padding-right: 10px"></i>DASHBOARD</a>
</li>
路由变化时,只刷新路由器出口部分,不刷新整个页面。
您不应在 Angular 模板中使用 href
以便在不重新加载的情况下导航。
你应该使用routerLink
示例:
<a class="nav-link active" [routerLink]="['/dashboard']" rel="no-refresh"><i class="fas fa-columns" style="color:white; padding-right: 10px"></i>DASHBOARD</a>
这应该可以解决它:
<li class="nav-item">
<a [routerLink]='dashboard'>DASHBOARD
</li>
另一种解决方案是将您的路由策略更改为哈希。这可以通过将 useHash 设置为 true 来实现。
RouterModule.forRoot(routes, {useHash: true})
那么您的仪表板 link 会像 localhost:4040/#/dashboard
并且不会刷新浏览器的选项卡。
显然,它并不比上面提到的其他解决方案更好,但它适合您的情况。
Angular7 路由器在路由更改时刷新整个页面。从 app.component.html 我尝试直接在这个页面上设置路由器插座,并将其包装在 app.component.html[= 上的另一个控制器中29=] 页。无论每次路线更改时使用哪个选项,都会重新加载整个屏幕。我只希望路由器插座区域重新加载。我以前在路由方面从未遇到过这个问题。
来自 app.component.html 我已经尝试将路由器插座直接放在此页面上,并将其包装在 [= 上的另一个控制器中35=] 页。无论每次路线更改时使用哪个选项,都会重新加载整个屏幕。
<!--Header Component-->
<app-header></app-header>
<div class="container-fluid" style="height:100%;">
<div class="row" style="height:100%">
<div class="col-2 sideNavContainer">
<!--Side Nav Component-->
<app-side-nav></app-side-nav>
</div>
<div class="col-10 main-container">
<!--<div class="container-fluid">-->
<div class="row dark-blue-bar" style="width: 100%;">
<!--Tab Bar Component-->
<app-tab-bar style="width: 100%"></app-tab-bar>
</div>
<div class="row" style="padding-left: 10px; margin-left: 0px">
<!--Main Content Component-->
<router-outlet></router-outlet>
</div>
<!--</div>-->
</div>
</div>
</div>
app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './core/dashboard/dashboard.component';
import { CodeSetOverviewComponent} from './core/code-set-overview/code-set-overview.component';
const routes: Routes = [
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' },
{ path: 'dashboard', component: DashboardComponent},
{ path: 'codeSetOverview', component: CodeSetOverviewComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
侧导航LINK示例
<ul class="nav flex-column side-nav">
<li class="nav-item">
<a class="nav-link active" href="dashboard" rel="no-refresh"><i class="fas fa-columns" style="color:white; padding-right: 10px"></i>DASHBOARD</a>
</li>
路由变化时,只刷新路由器出口部分,不刷新整个页面。
您不应在 Angular 模板中使用 href
以便在不重新加载的情况下导航。
你应该使用routerLink
示例:
<a class="nav-link active" [routerLink]="['/dashboard']" rel="no-refresh"><i class="fas fa-columns" style="color:white; padding-right: 10px"></i>DASHBOARD</a>
这应该可以解决它:
<li class="nav-item">
<a [routerLink]='dashboard'>DASHBOARD
</li>
另一种解决方案是将您的路由策略更改为哈希。这可以通过将 useHash 设置为 true 来实现。
RouterModule.forRoot(routes, {useHash: true})
那么您的仪表板 link 会像 localhost:4040/#/dashboard
并且不会刷新浏览器的选项卡。
显然,它并不比上面提到的其他解决方案更好,但它适合您的情况。