Angular: redirecionamento manual para a rota

91

Recentemente, comecei a usar o angular 4 em vez do angular.js 1.

Eu segui o tutorial dos heróis para aprender sobre os fundamentos do angular 4 e atualmente estou usando o próprio "RouterModule" do angular do pacote "@ angular / router".

A fim de implementar alguma autorização para meu aplicativo, gostaria de saber como redirecionar manualmente para outra rota, não consigo encontrar nenhuma informação útil sobre isso na internet.

Stan Hurks
fonte

Respostas:

233

Roteamento angular: navegação manual

Primeiro você precisa importar o roteador angular:

import {Router} from "@angular/router"

Em seguida, injete-o em seu construtor de componente:

constructor(private router: Router) { }

E, finalmente, chame o .navigatemétodo em qualquer lugar que você precise "redirecionar":

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

Você também pode colocar alguns parâmetros em sua rota, como user/5:

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

Documentação: Documentação oficial Angular

Boulboulouboule
fonte
8

Redirecionamento no angularjs 4 Botão para evento em, por exemplo: app.home.html

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

e em 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
fonte
5

Você deve injetar Router em seu construtor assim;

constructor(private router: Router) { }

então você pode fazer isso em qualquer lugar que quiser;

this.router.navigate(['/product-list']);
Metehan Senol
fonte
1
Como isso é para autorização, você também deve fazer isso dentro de um protetor de roteador. codecraft.tv/courses/angular/routing/router-guards
Graham Fowles
3

Redirecionamento angular manualmente: Importar @angular/router, injetar constructor()e chamar this.router.navigate().

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

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

onSubmit() {
  ...
  this.router.navigate(['/profile']); 
}
Sajib Khan
fonte
1

Experimente isto:

constructor(  public router: Router,) {
  this.route.params.subscribe(params => this._onRouteGetParams(params));
}
this.router.navigate(['otherRoute']);
Fateh Mohamed
fonte
1

Você pode ter respostas corretas suficientes para sua pergunta, mas no caso de seu IDE lhe dar o aviso

A promessa retornada de navegar é ignorada

você pode ignorar esse aviso ou usar this.router.navigate(['/your-path']).then().

Reza Saadati
fonte
1

Redirecionar para outra página usando a função no arquivo 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>
usuario
fonte
0

Isso deve funcionar

import { Router } from "@angular/router"

export class YourClass{

   constructor(private router: Router) { }

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

}
Dheeraj Kumar
fonte