Angular2

时间:2016-11-08 20:34:30

标签: angular angular-ui-router angular2-routing

我正在angular2项目中处理一些特定任务,我的问题在于路由部分。我已导入

import { UIRouter } from 'ui-router-ng2';

而不是:

import { Router} from '@angular/router-deprecated';

因此我无法识别重定向应该如何,因为在router中实例化constructor的普通情况将是:

this.router.navigate(['/Blablabla']);

但是,现在我找不到navigateUIRouter的替代方法,因此我可以重定向到特定组件。 任何帮助?

1 个答案:

答案 0 :(得分:1)

UI-Router(ui-router-ng2)与Angular 2路由器(@angular/router)不同。

方案:

在ui-router-ng2中,您可以通过注入router: UIRouter并调用the go methodrouter.stateService.go('somestate')以编程方式进行导航。

或者,您可以直接将状态服务注入$state: StateService并调用$state.go('somestate')

重定向:

您还可以创建状态并使用redirectTo property重定向到其他位置:

var redirectFromState = {
  name: 'landingPage1',
  url: '/landingpage/for-search-engine-or-whatever`
  redirectTo: 'login'
}

var loginState = {
  name: 'login',
  url: '/login',
  component: Login
}

钩:

您可以根据某些条件注册transition hook进行重定向。

router.transitionService.onStart({ to: 'auth.**' }, transition => {
  if (!transition.injector().get(AuthService).isAuthenticated()) {
    return router.stateService.target('login');
  }
}