我在.routing.ts文件中有这个
export const routing = RouterModule.forChild([
{
path: 'page/:id',
component: PageComponent
}]);
Run Code Online (Sandbox Code Playgroud)
我的PageComponent文件检查id参数并相应地加载数据.在以前版本的路由器中,如果我从/ page/4转到/ page/25,页面将"重新加载"并且组件将更新.
现在,当我尝试导航到/ page/X,其中X是id时,它只会在第一次加载,然后url会更改,但组件不会再次"重新加载".
是否需要传递一些东西来强制我的组件重新加载,并调用ngOnInit事件?
在访问之前我解决一个用户帐户片段我的用户页面:
APP-routing.component.ts
{
path: 'users/:id',
component: UserComponent,
resolve: {user: UsersService},
children: [
{path: '', pathMatch: 'full', redirectTo: 'account'},
{path: 'account', component: UserAccountComponent},
{path: 'sites', component: UserSitesComponent}
]
}
Run Code Online (Sandbox Code Playgroud)
users.service.ts
resolve(route: ActivatedRouteSnapshot, r: RouterStateSnapshot) {
return this.getUser(route.params['id']);
}
Run Code Online (Sandbox Code Playgroud)
用户account.component.ts
ngOnInit() {
this.route.parent.data.subscribe(data => {
this.user = data['user'];
// Initialize the form and its validators
this.initForm();
});
}
Run Code Online (Sandbox Code Playgroud)
在用户帐户组件中,我可以保存或重置表单.在这两种情况下,我都想更新组件的用户并重置表单和验证器.理想情况下,它会再次触发订阅.
知道如何手动触发旋转变压器吗?
(我曾经重新导航到与最后一个片段模拟一个随机数的相同路径,但是由于我将用户页面分解为父/子路径,因此当最后一个片段发生变化时,不再调用父级中的解析器)
在Angular2 rc5中,我们曾经使用以下router-config路由一个组件
{
path: '',
component: MyComponent
},
{
path: ':view',
component: MyComponent,
data: this.data
},
{
path: ':view/:childview',
component: MyComponent,
data: this.data
},
{
path: ':view/:childview/:subchildview',
component: MyComponent,
data: this.data
}
Run Code Online (Sandbox Code Playgroud)
现在在Angular2最终版本中,这是不可能的,因为接口CanReuse和OnReuse消失了.
现在我有问题在不同的路径之间切换.
当我在一条路上时
启动/起始页
我到了,但如果我去的话
启动/起始页/信息
该组件用于再次初始化而不是重复使用...
我该怎么做才能改变它?
谢谢