【问题标题】:Angular2 redirect from static methodAngular2从静态方法重定向
【发布时间】:2017-02-23 18:34:14
【问题描述】:

您好,我有“静态类”实用程序,只有静态方法(帮助程序):

export class Utils {    
     static doSomethingAndRedirect() {
         ...doo something...
         redirectTo->'/home'     
     }

}

那么redirectTo 代码应该是什么样子?

【问题讨论】:

  • 您需要对应用程序注入器的引用才能获得对路由器的引用。只是不要使用静态方法。
  • 当有人在没有 angular2 的纯 js 中也给我答案时,我会很满意。 Utils 是我的助手 STATIC 类——我不想改变它。 Redirectin 在 js 中如此简单 - angular2 有问题?
  • 你试图将 Angular2 与谷物相提并论,因此你对它不满意也就不足为奇了;-) Angular2 是一个新框架。几乎没有关于 Angular1 的内容。
  • 为什么 angular2 不支持静态方法?
  • 因为他们需要以不同的方式构建整个框架,这会导致它的可测试性降低,而可测试性是主要优先事项。

标签: redirect angular routing static-methods navigateurl


【解决方案1】:

在我的案例中找到的最佳解决方案就是...将参数“路由器”添加到静态函数参数列表中:

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

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

这是静态助手便利性和非静态“角度方式”之间的一种折衷。

【讨论】:

    【解决方案2】:

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

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

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

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

    • 视图显示当前状态并调度更改状态的操作
    • 操作指定应用中发生的事情
    • reducer 指定针对不同操作发生的状态更改
    • 效果指定某些操作会发生什么副作用

    【讨论】:

    • 您能否为我的问题中描述的案例提供更具体的解决方案? - 我应该如何在我的 Utils 静态类中使用 ngrx?
    • ngrx 是一个用于管理应用程序状态的完整解决方案,根据您的用例,它可能有点矫枉过正。如果您只想要一个用于小型、常见任务的实用程序类,那么您可能想要注入 RouterUtilityService
    猜你喜欢
    • 2011-11-23
    • 2015-12-22
    • 1970-01-01
    • 2019-02-14
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多