gpt4 book ai didi

angular - 路由重定向到根

转载 作者:太空狗 更新时间:2023-10-29 17:57:56 24 4
gpt4 key购买 nike

我正在尝试使用 Router.navigate 方法进行路由。我严格按照说明进行操作,但是当我通过 API 进行路由时,它会重新加载根页面。

在我的 RootComponent 中,我尝试使用

this._router.navigate(['ABC', 'Page1']); which should redirect me to application/abc/xyz

但如果我通过浏览器直接访问 application/abc/xyz,它会无缝运行

app.component.ts

import {Component} from "angular2/core";
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from "angular2/router";
import {RootComponent} from "./components/root.component";
import {Page1Component} from "./components/page1.component";


@Component({
selector: 'app',
template: '<router-outlet></router-outlet>',
directives: [ROUTER_DIRECTIVES],
providers: [
ROUTER_PROVIDERS
]
})

@RouteConfig([
{
path: '',
name: 'Root',
component: RootComponent,
useAsDefault: true
},
{
path: '/abc/...',
name: 'ABC',
component: ABCComponent
}
])

export class AppComponent {
}

ABC组件

@Component({
selector: 'abc',
template: '<router-outlet></router-outlet>',
directives: [ROUTER_DIRECTIVES]
})

@RouteConfig([
{
path: '/xyz',
name: 'Page1',
component: Page1Component
}
])
export class ABCComponent{

constructor(private _router:Router){
}

}

Page1Component

import {Component} from "angular2/core";
import {Router} from "angular2/router";

@Component({
selector: 'page1',
template: '<h1>Page1</h1>'
})

export class Page1Component{

constructor(private _router:Router){
}
}

我做错了什么?

编辑

用更简单的术语来解释它

                              Application (2 routes at root level)
| |
Default ("/") - Root Component /abc/ ABC Component
|
/abc/xyz Page1 Component

我想做的是,从根组件导航到 Page1。

解决方案

从 S.alem plunkr 进行逆向工程后,这里是解决方案

http://plnkr.co/edit/F1p6aQNJ7lREHCiVnKEP?p=preview

最佳答案

尝试使用主路由器(AppComponent 的路由器)。你可以通过这样的方式获取:

getMainRouter(router?: Router):Router {
if (router.parent === null) {
return router;
}
return this.getMainRouter(router.parent);
}

所以你的 RootComponent 可以是这样的:

// imports...

@Component({
selector: 'root',
template: '<h1>Root Component</h1>'
})

export class RootComponent{

private _mainRouter: Router;

constructor(private _router:Router){
this._mainRouter = this.getMainRouter(this._router);
}

routeToSomewhere():void {
this._mainRouter.navigate(['./ABC', 'Page1']);
}

private getMainRouter(router?: Router):Router {
if (router.parent === null) {
return router;
}
return this.getMainRouter(router.parent);
}
}

这是一个plunker以显示。 Hero Tutorial我是fork出来的,如果你把AppComponent的route config放开,你可以看到相关的代码。在单独的窗口中启动 plunker 以查看浏览器 url。

关于angular - 路由重定向到根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36731725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com