使用 UI-Router 已经太久了,我不记得它是如何工作的,所以这可能不是你所描述的。
但是对于 Angular,每个模板都有一个组件。因此,您需要一个用于“未授权”和“未找到”模板的组件。或者,您可以使用一个模板制作一个组件,该模板显示定义“未授权”或“未找到”的文本。
例如,我的页面未找到组件如下所示:
import { Component } from '@angular/core';
@Component({
template: `
<h1>This is not the page you were looking for!</h1>
`
})
export class PageNotFoundComponent { }
相反,您可以像这样使其更概括:
import { Component } from '@angular/core';
@Component({
template: `
<h1>{{message}}</h1>
`
})
export class MessageComponent {
message: string;
}
这会支持你的场景吗?
要在重新路由之前保留用户的“当前”路由,您可以构建如下服务:
import { Injectable } from '@angular/core';
@Injectable()
export class MessageService {
currentUrl: string;
}
然后,当某处出现问题时,您将拥有如下代码:
this.messageService.currentUrl = url;
this.router.navigate(['/pageNotFound']);
然后,您可以检索 currentUrl 以显示它或其他任何内容。