Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2在不重新加载父路由的情况下加载子路由_Javascript_Angular_Angular Routing - Fatal编程技术网

Javascript Angular2在不重新加载父路由的情况下加载子路由

Javascript Angular2在不重新加载父路由的情况下加载子路由,javascript,angular,angular-routing,Javascript,Angular,Angular Routing,我刚从angular2开始,遇到了一个问题。当当前视图为父管线时导航到子管线时,父管线仍会重新加载 我的“用户”页面有此路由配置 const userRoutes: Routes = [ { path: ':username', component: UserProfileComponent, children: [ { path: '', compon

我刚从angular2开始,遇到了一个问题。当当前视图为父管线时导航到子管线时,父管线仍会重新加载

我的“用户”页面有此路由配置

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而不是空数组
[]
,或者两者都设置为空。您能够修复此问题吗?