您可以使用addPipelineStep创建自己的管道步骤,但步骤的名称必须与管道的其中一个插槽匹配,默认的插槽顺序为authorize,preActivate,preRender和postRender。 Aurelia还具有为这些插槽创建管道步骤的功能。
在加载路径的步骤和调用路径视图模型'canActivate函数(如果已定义)之间调用authorize。 如果已定义,则在路径视图模型'canActivate函数和先前路径视图模型的停用函数之间调用preActivate。 在路径视图模型的激活功能之间和组件渲染/组合之前调用preRender。 在组件渲染/组合后调用postRender
所以它是public canActivate(): void {
吗? public canActivate(): boolean {
?等
答案 0 :(得分:1)
step
必须使用run
方法返回导航结果的Promise
。
export class MyStep {
run(routingContext, next) {
// do something here!
return next();
}
}
其他地方:
this.router.configure(config =>
config.addPipelineStep('authorize', new MyStep ()));
导航结果对象是具有completed
属性和/或output
属性的对象。 result.output
可以是Error
或具有navigate
方法的对象。
请参阅此处的代码,了解路由器期望您的步骤Promise返回的内容:https://github.com/aurelia/router/blob/34119d1ce827f10fe5d3c7c97133d83ad922eab6/src/app-router.js#L174