Angular 2 子路由不工作
Angular 2 sub routing not working
我正在尝试在我的应用程序中实施 child 路由器。
我所做的是,点击侧面菜单,我导航到 child as
this._router.navigate(['/parent/child']);
但它没有执行 child 组件,而是再次执行 parent 组件。
路由器在 app.module.ts
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{path:'parent',
children:[
{path: '', component: ParentComponent, pathMatch: 'full'}
,{path:"child",component:ChildComponent,
outlet:'content'
}]
},
{path:'**',component:LoginComponent}
];
Parent组件
import { Component } from '@angular/core';
import {Router} from '@angular/router';
import {OnInit} from '@angular/core';
@Component({
selector: 'login',
templateUrl: 'app/parent.template.html'
})
export class ParentComponent implements OnInit{
constructor(private _router: Router){}
ngOnInit(){}
menuClicked(event:any):void{
let elements = event.target.parentElement.children;
for(let i=0;i<elements.length;i++){
elements[i].classList.remove('active')
}
event.target.classList.add('active');
this._router.navigate(['/parent/child']);
}
}
子组件:
import { Component } from '@angular/core';
import {Router} from '@angular/router';
import {OnInit} from '@angular/core';
@Component({
templateUrl: 'app/child.template.html',
})
export class IncidentComponent implements OnInit{
constructor(private _router: Router){}
ngOnInit(){}
}
发生的事情是,它导航到 parent 并且工作正常。当我单击左侧菜单时,我可以看到 url 变化几分之一秒,然后它重新加载 parent,从 url 中删除 child 名称。我该如何解决?我在实施中错过了什么?
Parent 模板
<div class="home-container row">
<div class="home-body col-12">
<div class="home-header row">
</div>
<div class="home-contents row">
<div class="left-menu col-2">
</div>
<div class="right-contents col-10">
<router-outlet name="content"></router-outlet>
</div>
</div>
</div>
这通常是由您的 <router-outlet>
所在的位置引起的。它应该是您应用程序中唯一变化的部分
如果不在主要组件中,请检查位于何处
试试这个
this._router.navigate(['child'],{relativeTo: this.route});
这里this.route是ActivatedRoute的一个实例。
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute)
我正在尝试在我的应用程序中实施 child 路由器。 我所做的是,点击侧面菜单,我导航到 child as
this._router.navigate(['/parent/child']);
但它没有执行 child 组件,而是再次执行 parent 组件。
路由器在 app.module.ts
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{path:'parent',
children:[
{path: '', component: ParentComponent, pathMatch: 'full'}
,{path:"child",component:ChildComponent,
outlet:'content'
}]
},
{path:'**',component:LoginComponent}
];
Parent组件
import { Component } from '@angular/core';
import {Router} from '@angular/router';
import {OnInit} from '@angular/core';
@Component({
selector: 'login',
templateUrl: 'app/parent.template.html'
})
export class ParentComponent implements OnInit{
constructor(private _router: Router){}
ngOnInit(){}
menuClicked(event:any):void{
let elements = event.target.parentElement.children;
for(let i=0;i<elements.length;i++){
elements[i].classList.remove('active')
}
event.target.classList.add('active');
this._router.navigate(['/parent/child']);
}
}
子组件:
import { Component } from '@angular/core';
import {Router} from '@angular/router';
import {OnInit} from '@angular/core';
@Component({
templateUrl: 'app/child.template.html',
})
export class IncidentComponent implements OnInit{
constructor(private _router: Router){}
ngOnInit(){}
}
发生的事情是,它导航到 parent 并且工作正常。当我单击左侧菜单时,我可以看到 url 变化几分之一秒,然后它重新加载 parent,从 url 中删除 child 名称。我该如何解决?我在实施中错过了什么?
Parent 模板
<div class="home-container row">
<div class="home-body col-12">
<div class="home-header row">
</div>
<div class="home-contents row">
<div class="left-menu col-2">
</div>
<div class="right-contents col-10">
<router-outlet name="content"></router-outlet>
</div>
</div>
</div>
这通常是由您的 <router-outlet>
所在的位置引起的。它应该是您应用程序中唯一变化的部分
如果不在主要组件中,请检查位于何处
试试这个
this._router.navigate(['child'],{relativeTo: this.route});
这里this.route是ActivatedRoute的一个实例。
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute)