使用JavaScript进行Angular2重定向?

时间:2016-05-15 11:46:22

标签: angular angular2-routing

我使用Angular2构建SPA。我想知道如何使用ES5重定向。如果我使用window.location,那么它会重新加载整个页面。我只想要改变组件。

似乎我需要使用ng.router.Redirect但是当我打电话时没有任何事情发生。

1 个答案:

答案 0 :(得分:1)

为什么使用javascript如果angular提供导航方法本身,我不知道es5但是我在使用router.navigate(['routeName'])的打字稿中做了。只需尝试使用路由,您只能更改组件而不是加载整个页面。

  不要忘记在构造函数中实例化路由器,如下所示。

export class AppComponent  implements OnInit {
  constructor(private router: Router) {}

  ngOnInit() {
    this.router.navigate(['/yourRouteName']);
  }
}

了解更多信息,请参阅此处https://angular.io/docs/ts/latest/guide/router.html

es5的更新

app.AppComponent = ng.core
    .Component({
       selector: 'the-app',
       template: `
          <h1>App!!!</h1>
          <a [routerLink]="['Login']">Login</a>
          <a [routerLink]="['ABC']">ABC</a>
          <router-outlet></router-outlet>
       `,
       directives:[
          ng.router.ROUTER_DIRECTIVES
       ]
    })
    .Class({
       constructor: [ng.router.Route, function(_router) {
           this._router = _router; // use for navigation, etc
           this._router.navigate(['RouteName']) // For navigation ot another component
       }]
    });
app.AppComponent = ng.router
    .RouteConfig([
       { path: '/', component:app.LoginCOmponent, name:'Login' },
       { path: '/children', component:app.xyz, name:'xyz' }
    ])(app.AppComponent);

我没有试过这个,但最有可能是这一次的工作。