Angular2从静态方法重定向

时间:2016-10-14 10:44:48

标签: redirect angular routing static-methods navigateurl

我有'静态类'实用程序只有静态方法(助手):

synchronized (addtion) {
    for(int i=0;i<100;i++) {
        ...
        synchronized (this) {
            System.out.println(
                Thread.currentThread().getName() + 
                "---val value lock on addition obj -->" + val++
            );
        }
        System.out.println(
            Thread.currentThread().getName() + 
            "---add value lock on addition obj -->" + addtion.add++
        );
    }
}

那么export class Utils { static doSomethingAndRedirect() { ...doo something... redirectTo->'/home' } } 代码应该如何?

2 个答案:

答案 0 :(得分:1)

您尝试解决的用例有错误的方法。请查看ngrx/storengrx/effects

简而言之,您可以定义修改应用状态的操作和缩减器。接下来,您可以对具有不同副作用(ngrx/effects)的不同操作做出反应,例如在我的应用程序中我有:

  • 操作:LoginAction和LoginSuccessAction
  • 效果:触发LoginSuccessAction时,我的效果会重定向到/dashboard组件

这可以很好地分离关注点:

  • views显示当前状态和分派更改状态的操作
  • 操作指定应用中发生的事情
  • reducer指定针对不同操作发生的状态更改
  • 效果指定某些操作会产生哪些副作用

答案 1 :(得分:0)

我在案例中找到的最佳解决方案只是...添加参数&#39; router&#39;进入静态函数参数列表:

 static doSomethingAndRedirect(router) {
     ...doo something...

     router.navigateByUrl('home'); // redirect
 }

这是静态帮助方便和非静态方式之间的一种折衷方式&#34;。