2016-05-15 9 views
0

Ich habe ein SPA mit Angular2 bauen. Ich möchte wissen, wie man mit ES5 umleitet. Wenn ich window.location verwende, dann lädt es die ganze Seite neu. Ich möchte nur eine Änderung der Komponenten.Angular2 Redirect mit JavaScript?

Scheint so, als müsste ich ng.router.Redirect verwenden, aber wenn ich es anrufe passiert nichts.

Antwort

1

Warum JavaScript zu verwenden, wenn angular bietet navigieren Methode selbst, ich weiß nicht, über es5, aber ja, ich habe in Typoskript mit router.navigate(['routeName']). Versuchen Sie es einfach mit dem Routing, Sie können nur die Komponente ändern, anstatt die ganze Seite zu laden.

don't forget to instantiate router in the constructor like this.

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

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

für weitere Informationen siehe hier https://angular.io/docs/ts/latest/guide/router.html

Update für 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); 

ich havn't dies versucht, aber höchstwahrscheinlich dieses gona Arbeit.

+0

Ich weiß nicht, TypeScript. Ich brauche ES5-Code dafür. –

+0

Ich bekomme diesen Fehler 'Fehler: Uncaught (in Versprechung): Kein Provider für Route! (Klasse2 -> Route) '. Scheint so, als ob du den Provider für den Router Service verpasst hast. –

+0

haben Sie Router-Datei in der index.html und router_providers zum Zeitpunkt des bootstrapping Ihre App –