在 Angular 2 中导航而无需单击 HTML 元素

Navigate in Angular 2 Without Having to Click On an HTML Element

在angular中可以找到很多展示如何使用按钮或路由器链接在组件之间导航的示例 2. 我想做的是在发生错误时导航到某个组件,而不用户操作。像这样:

class MyErrorHandler implements ErrorHandler {
    handleError(error) {
        this.router.navigate(['/pagenotfound']);
    }
}

但是无法在 MyErrorHandler 构造函数中初始化 Router 对象。有没有办法解决这个问题并创建一个自动导航系统?

如果您想在错误处理程序 class 中使用 Router 服务,则必须注入它。您可以通过使用 @Injectable 装饰器注册您的服务来做到这一点。请参阅下面的示例。

@Injectable()
export class MyErrorHandler {
    constructor(private router: Router) {

    }

    handleError(error) {
        this.router.navigate(['/pagenotfound']);
    }
}

完成此操作后,您可以将 MyErrorHandler 服务注入您的组件或任何其他您想使用它的地方。

有关依赖注入 (DI) 的详细信息,请参阅: https://angular.io/guide/dependency-injection