Angular:手动重定向到路由

Posted

技术标签:

【中文标题】Angular:手动重定向到路由【英文标题】:Angular : Manual redirect to route 【发布时间】:2018-04-18 10:03:39 【问题描述】:

我最近才开始使用 angular 4 而不是 angular.js 1。

我已经按照英雄教程学习了 Angular 4 的基础知识,我目前正在使用来自“@angular/router”包的 Angular 自己的“RouterModule”。

为了对我的应用程序实施一些授权,我想知道如何手动重定向到另一个路由,我似乎无法在互联网上找到任何有用的信息。

【问题讨论】:

【参考方案1】:

试试这个:

constructor(  public router: Router,) 
  this.route.params.subscribe(params => this._onRouteGetParams(params));

this.router.navigate(['otherRoute']);

【讨论】:

【参考方案2】:

这应该可行

import  Router  from "@angular/router"

export class YourClass

   constructor(private router: Router)  

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


【讨论】:

【参考方案3】:

你应该像这样在你的构造函数中注入路由器;

constructor(private router: Router)  

那么你可以在任何你想要的地方做这个;

this.router.navigate(['/product-list']);

【讨论】:

因为这是为了授权,所以您也应该在路由器保护中执行此操作。 codecraft.tv/courses/angular/routing/router-guards【参考方案4】:

角度路由:手动导航

首先你需要导入角度路由器:

import Router from "@angular/router"

然后将它注入到你的组件构造函数中:

constructor(private router: Router)  

最后在您需要“重定向”的任何地方调用.navigate 方法:

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

你也可以在你的路由中加入一些参数,比如user/5

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

文档:Angular official documentaiton

【讨论】:

【参考方案5】:

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'])
 
 

【讨论】:

【参考方案6】:

手动角度重定向:导入@angular/router,注入constructor(),然后调用this.router.navigate()

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

constructor(private router: Router) 
  ...


onSubmit() 
  ...
  this.router.navigate(['/profile']); 

【讨论】:

【参考方案7】:

使用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>

【讨论】:

【参考方案8】:

你的问题可能有足够的正确答案,但万一你的 IDE 给你警告

从导航返回的承诺被忽略

您可以忽略该警告或使用this.router.navigate(['/your-path']).then()

【讨论】:

以上是关于Angular:手动重定向到路由的主要内容,如果未能解决你的问题,请参考以下文章

angular---路由之重定向路由

如何根据 Angular 2 中的条件重定向到某个路由。

如何使 Laravel 5 重定向到没有哈希(#)的 Angular 路由?

如何将所有路由重定向到nest.js中的index.html(Angular)?

Angular ui 路由器 - 重定向根本不起作用

angular 5 - 登录后重定向上一页