按角度5按需执行解析器

时间:2018-04-10 19:07:37

标签: angular typescript

我正在研究一个角度应用程序,我最近从角度4.2转换为角度5(虽然我还没有使用角度5的任何特征)。

我需要根据需要在特定路径上执行解析器(当满足某个条件时从代码执行)。例如

if ( a === b) {
     //execute resolver
  }

我不确定,这样做的正确方法是什么,因为解析器就像任何其他打字稿类一样是一个类。

2 个答案:

答案 0 :(得分:1)

我会试一试。只是一个概括,因为您还没有发布任何实际代码。我用一个简单的三元组来完成今年早些时候完成的任务

app.module.ts提供程序摘录解析器

  {
        provide: 'conditionResolver', useValue: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
            //Something like this
            window.open((route.data as any).otherUrl);
        }
    }

app.router.ts路线摘录实施

    path: 'SomeComponentURL', component: SomeComponent, resolve: {
        url: 'conditionResolver'
    },
    data: {
        condition: (someCondition != '#/SomeComponent')
            ? 'doSomething()' : orDoSomethingElse()
    }

答案 1 :(得分:0)

我实际上是通过更新路由配置并在解析器的解析方法本身中添加条件来实现的。