Javascript Angular2在不重新加载父路由的情况下加载子路由
我刚从angular2开始,遇到了一个问题。当当前视图为父管线时导航到子管线时,父管线仍会重新加载 我的“用户”页面有此路由配置Javascript Angular2在不重新加载父路由的情况下加载子路由,javascript,angular,angular-routing,Javascript,Angular,Angular Routing,我刚从angular2开始,遇到了一个问题。当当前视图为父管线时导航到子管线时,父管线仍会重新加载 我的“用户”页面有此路由配置 const userRoutes: Routes = [ { path: ':username', component: UserProfileComponent, children: [ { path: '', compon
const userRoutes: Routes = [
{
path: ':username',
component: UserProfileComponent,
children: [
{
path: '',
component: UserFeedComponent
},
{
path: 'news',
component: UserNewsComponent
}
]
},
];
export const userRouting = RouterModule.forChild(userRoutes);
用户配置文件组件:
@Component({
selector: 'user-profile',
templateUrl: 'app/+users/user-profile.component.html',
styleUrls: ['app/+users/user-profile.component.css']
})
export class UserProfileComponent {
constructor(private users: UserService, private route: ActivatedRoute, private titleService: TitleService) {
}
private user: User;
private title: string;
ngOnInit() {
console.log("init");
this.route.params.subscribe(params => {
let username = params['username'];
this.users.resolveUsername(username).subscribe(user => {
this.user = user;
this.users.user.next(user)
});
});
// use the titleService to subscribe to a change in title. Child route handles title.
this.titleService.title.subscribe(title => this.title = title)
}
}
以及UserProfileComponent的模板:
<div class="profile-header grid-content medium-6 medium-offset-3 small-12" *ngIf="user">
<img src="{{user?.picture}}" class="thumbnail avatar">
<div class="profile-info">
<h1>{{user?.name}}</h1>
<h4><a [routerLink]="['/users', user.username]" *ngIf="user"> @{{user.username}}</a></h4>
</div>
<ul class="menu-bar">
<li><a [routerLink]="['/users', user.username]" *ngIf="user"><i class="fa fa-rss"></i> Feed</a> </li>
<li><a [routerLink]="['news']"><i class="fa fa-newspaper-o"></i> News</a> </li>
</ul>
</div>
<h1>{{title}}</h1>
<hr>
<router-outlet></router-outlet>
{{user?.name}
@{{user.username}
- 喂
- 新闻
{{title}}
因此,如果我在UserFeedComponenet并导航到UserNewsComponenet,则整个UserProfile组件将重新加载。这会减慢页面加载速度,因为用户通过HTTP请求再次加载到UserProfileComponent
的ngOnInit()
这是安格拉尔的怪癖还是我做错了什么?如果是前者,那么我将为其创建一个问题。尽管我知道在某些情况下您可能需要这样做,但这样做的效率非常低。应该
path:':username'
是path:'/username'
?@Z.Z。根据angular2,冒号表示url参数。所以用户名是动态的,我使用的是2.4.1,但仍然存在这个问题。不过,docs网站上的路由器演示并没有表现出这种行为。这肯定是我的代码中的一些东西,但我不知道是什么。不确定是什么修复了它,但我确实修复了它。activatedRoute中的逻辑不正确,或者因为我在还原程序中将数组的默认值设置为null而不是空数组[]
,或者两者都设置为空。您能够修复此问题吗?