Angular 2:当我离开路由时,如何应用回调
Angular 2: How to apply a callback when I leave a route
这是一个例子,我在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}
]}
在CCD_ 2中,我定义了另一条这样的路线:
@RouteConfig([
{path:'/info', name: 'UserInfo', component: UserInfoComponent, useAsDefault: true},
{path:'/order', name: 'UserOrder', component: UserOrderComponent},
{path:'/detail', name: 'UserDetail', component: UserDetailComponent}
]}
AppComponent
和UserComponent
中都定义了两个独立的导航:
//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
中获得这些更改,我想将逻辑放入这些子组件(UserInfoComponent
、UserOrderComponent
和UserDetailComponent
)中。那么,当用户将当前路由留在子组件中时,有什么方法可以触发回调吗?如果没有,还有其他方法可以实现吗?感谢
路由器已经配备了生命周期挂钩,CanDeactivate Interface
允许/拒绝导航离开的钩子是routerCanDeactivate(nextInstruction, prevInstruction) { ... }
。如果您从该函数返回false,它将停止导航。
Plunker的例子:(在Plunker中,路线2永远不允许导航离开。你不能回到路线1)
@Component({
selector:'route-2',
template:'route 2 template'
})
class SecondRoute{
routerCanDeactivate(){
return false; // false stops navigation, true continue navigation
}
}
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 跟踪在页面加载时应用内联样式的JavaScript
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如果文本字段为空,则使用JavaScript应用CSS样式
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 从html创建一个指令,该指令按类名应用函数
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中