如何以编程方式更改路由器路径?

时间:2019-05-21 17:04:39

标签: javascript angular typescript ionic-framework

我正在使用Angular构建Ionic应用程序,并调用API以获得一些结果。根据响应对象的特定属性(例如“ mode” =“ 0”或mode =“ 1”),我需要更改应用程序路由模块中定义的路径,尤其是要动态更改主页。

我希望appcomponent(启动组件)调用API并检查模式,然后根据该属性传递一些路由。

例如:

我想要类似的东西:

  s2=[ ['0' for col in range(100)]  for row in range(100)]
  for u in log_progress (range(100)):
      for v in log_progress (range(100)):
          energy=0.0
          #for h in log_progress(range(200)):
          z=0.0
          for l in log_progress(range(6)):
              for h in log_progress(range(0,int(100-delay[l][u][v]))):
              #if h+delay[l][u][v]< 100:
                 m= int(h+delay[l][u][v])
                 z= z + float(str(FB.collect()[l][m]))
              energy= energy+z*z
    s2[u][v]=round(energy)

是否可以在app-routing.module内部执行类似的操作? 在第二种情况下也可以隐藏firstPath吗?

1 个答案:

答案 0 :(得分:0)

这不是更改应用程序路由文件中此类要求的正确方法。 您可以使用Guard来实现。

In your child route file do like this: 
 {
        path: '',
        component: HomePage,
        canActivate: [AuthGuard]
      }


Auth Guard file: 

import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, RouterStateSnapshot, CanActivate } from '@angular/router';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {
  mode: number;  **// You can save this mode variable into a common service and use it.**
  constructor() { }

  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {

    if(this.mode == 1) {
      return false;
    }else {
      return true;
    }

    }); 


  }


}