Javascript 角度2:当我离开路线时如何应用回调
以下是示例,我在Javascript 角度2:当我离开路线时如何应用回调,javascript,angular,angular2-routing,Javascript,Angular,Angular2 Routing,以下是示例,我在AppComponent中定义了一些路由: @RouteConfig([ {path:'/', name: 'Index', component: IndexComponent, useAsDefault: true}, {path:'/:id/...', name: 'User', component: UserComponent}, {path:'/plan', name: 'Plan', component: PlanCompone
AppComponent
中定义了一些路由:
@RouteConfig([
{path:'/', name: 'Index', component: IndexComponent, useAsDefault: true},
{path:'/:id/...', name: 'User', component: UserComponent},
{path:'/plan', name: 'Plan', component: PlanComponent},
{path:'/foo', name: 'Foo', component: FooComponent}
]}
//AppComponent:
<a [routerLink]="['User']">User</a>
<a [routerLink]="['Plan']">Plan</a>
<a [routerLink]="['Foo']">Foo</a>
--------------------------------------------
//UserComponent:
<a [routerLink]="['UserInfo']">User Info</a>
<a [routerLink]="['UserOrder']">User Order</a>
<a [routerLink]="['UserDetail']">User Detail</a>
在UserComponent
中,我定义了另一条路径,如下所示:
@RouteConfig([
{path:'/info', name: 'UserInfo', component: UserInfoComponent, useAsDefault: true},
{path:'/order', name: 'UserOrder', component: UserOrderComponent},
{path:'/detail', name: 'UserDetail', component: UserDetailComponent}
]}
在AppComponent
和UserComponent
中定义了两个单独的导航:
@RouteConfig([
{path:'/', name: 'Index', component: IndexComponent, useAsDefault: true},
{path:'/:id/...', name: 'User', component: UserComponent},
{path:'/plan', name: 'Plan', component: PlanComponent},
{path:'/foo', name: 'Foo', component: FooComponent}
]}
//AppComponent:
<a [routerLink]="['User']">User</a>
<a [routerLink]="['Plan']">Plan</a>
<a [routerLink]="['Foo']">Foo</a>
--------------------------------------------
//UserComponent:
<a [routerLink]="['UserInfo']">User Info</a>
<a [routerLink]="['UserOrder']">User Order</a>
<a [routerLink]="['UserDetail']">User Detail</a>
//AppComponent:
使用者
计划
福
--------------------------------------------
//用户组件:
用户信息
用户订单
用户详细信息
我期望的行为是:当用户单击这些导航时,会出现一个模式,询问用户在离开此路线之前是否确认保存。如果是,则自动保存用户的更改 由于似乎无法在
UserComponent
中获得这些更改,因此我想将逻辑放入这些子组件中(UserInfoComponent
,UserOrderComponent
和UserDetailComponent
)。那么,当用户离开子组件中的当前路由时,有没有任何方法可以触发回调?如果没有,是否有其他方法来实现这一点?谢谢路由器已经随附
允许/拒绝导航的钩子是routerCanDeactivate(nextInstruction,previdirection){…}
。如果从该函数返回false,它将停止导航
示例:(在plunker中,路线2永远不允许导航离开。您不能返回路线1)
您可以在进入路由时设置一个值(一个“回调”),比如
x.currentRouteLave=function(){dostuff()}
?这样,您就可以从新路由调用someReachableObject.currentRouteLave()
。我我使用了类似的模式来跟踪上次使用的文本框以应用共享编辑器按钮…@dandavis,你的意思是拥有一个带有CurrentRouteSave
功能的自定义路由器?@ZhiLi不客气,其他路由器生命周期挂钩也非常有用