我们正在开发SPA。在某些情况下,它的一部分被渲染到另一个应用程序中(作为标记的一部分)。 在这种情况下,我们不希望在我们的应用程序中进行路由,因为我们可能会“偷”"它来自其他应用程序。 是否有可能,以及#34;关闭"完全在Angular中路由?或者忽略未知的路线?
我试过
什么是工作,完全删除RouteModule.forRoot(...) - 导入 - 当然,在这种情况下,应用程序的其余部分完全被破坏。
这是CanLoad-Guard的一次尝试:
const routes: Routes = [
// ...
{ path: "", redirectTo: "home", pathMatch: "full" },
{ path: "**", redirectTo: "home" }
];
@NgModule({
declarations: [],
imports: [RouterModule.forRoot(routes, { useHash: true, initialNavigation: false })],
exports: [RouterModule],
providers: [{
provide: "DisableRouting",
useValue: () => false
}]
})
export class AppRoutingModule {
constructor(@Inject("HEADER_RENDER_MODE") private headerRenderMode: boolean, private router: Router) {
if (!headerRenderMode) {
router.initialNavigation();
} else {
// we don't want routing at this point
router.resetConfig([{
path: "**",
component: HomeComponent,
canLoad: ["DisableRouting"]
}]);
}
}
}
答案 0 :(得分:2)
我找到了一种方法......它并没有真正关闭,更像是忽视它。 在“turnOff-Mode”中,我们只定义一个通配符路由到一个组件,该组件正在执行任何内容并且根本不呈现任何内容。
路由模块:
export class AppRoutingModule {
constructor(@Inject("HEADER_RENDER_MODE") private headerRenderMode: boolean, private router: Router) {
if (!headerRenderMode) {
router.initialNavigation();
} else {
router.resetConfig([
{ path: "**", component: LazyComponent }
]);
}
}
}
懒惰的组件:
@Component({
selector: "lazy",
template: ""
})
export class LazyComponent {
}