Angular: ручное перенаправление на маршрут

89

Я только недавно начал использовать angular 4 вместо angular.js 1.

Я следил за руководством по героям, чтобы узнать об основах angular 4, и в настоящее время я использую собственный Angular RouterModule из пакета «@ angular / router».

Чтобы реализовать некоторую авторизацию для моего приложения, я хотел бы знать, как вручную перенаправить на другой маршрут, я не могу найти никакой полезной информации об этом в Интернете.

Стэн Хёркс
источник

Ответы:

226

Угловая маршрутизация: ручная навигация

Для начала вам нужно импортировать угловой роутер:

import {Router} from "@angular/router"

Затем введите его в свой конструктор компонентов:

constructor(private router: Router) { }

И, наконец, вызовите .navigateметод везде, где вам нужно «перенаправить»:

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

Вы также можете указать некоторые параметры своего маршрута, например user/5:

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

Документация: Официальный документ Angular

Boulboulouboule
источник
8

Перенаправление в angularjs 4 Кнопка для события, например: app.home.html

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

и в 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'])
 }
 }
Кришнамурти Ачарья
источник
5

Вы должны вставить Router в свой конструктор следующим образом:

constructor(private router: Router) { }

тогда вы можете делать это где угодно;

this.router.navigate(['/product-list']);
Метехан Шенол
источник
1
Поскольку это делается для авторизации, вы также должны сделать это внутри защиты маршрутизатора. codecraft.tv/courses/angular/routing/router-guards
Грэм Фаулз
3

Угловое перенаправление вручную: импорт @angular/router, внедрение, constructor()затем вызов this.router.navigate().

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

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

onSubmit() {
  ...
  this.router.navigate(['/profile']); 
}
Саджиб Хан
источник
1

Попробуй это:

constructor(  public router: Router,) {
  this.route.params.subscribe(params => this._onRouteGetParams(params));
}
this.router.navigate(['otherRoute']);
Фатех Мохамед
источник
1

Перенаправление на другую страницу с использованием функции файла 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>   
Ник
источник
1

У вас может быть достаточно правильных ответов на ваш вопрос, но если ваша IDE выдает предупреждение

Обещание, возвращенное из навигации, игнорируется

вы можете проигнорировать это предупреждение или использовать this.router.navigate(['/your-path']).then().

Реза Саадати
источник
0

Это должно работать

import { Router } from "@angular/router"

export class YourClass{

   constructor(private router: Router) { }

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

}
Дирадж Кумар
источник