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

时间:2017-07-09 06:55:59

标签: angular angular2-routing

可以找到许多示例,说明如何使用按钮或routerLink以角度2在组件之间导航。我想要做的是在发生错误时导航到某个组件,而无需用户操作。像这样:

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

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

1 个答案:

答案 0 :(得分:3)

如果要在错误处理程序类中使用Router服务,则必须注入它。您可以使用@Injectable装饰器注册服务来完成此操作。请参阅下面的示例。

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

    }

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

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

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