Angular: Ręczne przekierowanie do trasy

89

Niedawno zacząłem używać angular 4 zamiast angular.js 1.

Skorzystałem z samouczka Heroes, aby poznać podstawy Angular 4, a obecnie używam własnego modułu „RouterModule” firmy Angular z pakietu „@ angular / router”.

Aby zaimplementować autoryzację dla mojej aplikacji, chciałbym wiedzieć, jak ręcznie przekierować na inną trasę, nie mogę znaleźć żadnych przydatnych informacji na ten temat w Internecie.

Stan Hurks
źródło

Odpowiedzi:

226

Trasowanie kątowe: nawigacja ręczna

Najpierw musisz zaimportować router kątowy:

import {Router} from "@angular/router"

Następnie wstrzyknij go do konstruktora komponentu:

constructor(private router: Router) { }

Na koniec wywołaj .navigatemetodę w dowolnym miejscu, w którym chcesz „przekierować”:

this.router.navigate(['/your-path'])

Możesz również ustawić kilka parametrów na swojej trasie, takich jak user/5:

this.router.navigate(['/user', 5])

Dokumentacja: oficjalna dokumentacja Angular

Boulboulouboule
źródło
8

Przekierowanie w angularjs 4 Przycisk dla zdarzenia np .: app.home.html

<input type="button" value="clear" (click)="onSubmit()"/>

oraz w home.componant.ts

 import {Component} from '@angular/core';
 import {Router} from '@angular/router';

 @Component({
   selector: 'app-root',
   templateUrl: './app.home.html',
 })

 export class HomeComponant {
   title = 'Home';
   constructor(
     private router: Router,
    ) {}

  onSubmit() {
    this.router.navigate(['/doctor'])
 }
 }
Krishnamoorthy Acharya
źródło
5

Powinieneś wstrzyknąć Router do swojego konstruktora w ten sposób;

constructor(private router: Router) { }

wtedy możesz to zrobić gdziekolwiek chcesz;

this.router.navigate(['/product-list']);
Metehan Senol
źródło
1
Ponieważ służy to autoryzacji, należy to również zrobić wewnątrz osłony routera. codecraft.tv/courses/angular/routing/router-guards
Graham Fowles
3

Ręczne przekierowanie kątowe: Importuj @angular/router, wprowadź, constructor()a następnie zadzwoń this.router.navigate().

import {Router} from '@angular/router';
... 
...

constructor(private router: Router) {
  ...
}

onSubmit() {
  ...
  this.router.navigate(['/profile']); 
}
Sajib Khan
źródło
1

Spróbuj tego:

constructor(  public router: Router,) {
  this.route.params.subscribe(params => this._onRouteGetParams(params));
}
this.router.navigate(['otherRoute']);
Fateh Mohamed
źródło
1

Przekieruj do innej strony za pomocą funkcji w pliku component.ts ##

   componene.ts-
   ------------------------------------------------------------------------  
   import {Router} from '@angular/router';

   constructor(private router: Router) {}

   OnClickFunction()
   {
        this.router.navigate(['/home']);
   }

  component.html-
  ----------------------------------------------------------------------------------- 

     <div class="col-3">                  
         <button (click)="OnClickFunction()" class="btn btn-secondary btn-custom mr- 
          3">Button Name</button>
    </div>   
nacięcie
źródło
1

Możesz mieć wystarczająco dużo poprawnych odpowiedzi na swoje pytanie, ale na wypadek, gdyby IDE dawało ostrzeżenie

Obietnica zwrócona z nawigacji jest ignorowana

możesz zignorować to ostrzeżenie lub użyć this.router.navigate(['/your-path']).then().

Reza Saadati
źródło
0

To powinno działać

import { Router } from "@angular/router"

export class YourClass{

   constructor(private router: Router) { }

   YourFunction() {
      this.router.navigate(['/path']);
   }

}
Dheeraj Kumar
źródło