如何在ui-view状态组件中访问@ ui-router /角度url和params?

时间:2018-07-11 17:48:22

标签: angular angular-ui-router

我在项目中使用@ uirouter / angular,并且有许多状态,例如:

export let MAIN_STATES: Ng2StateDeclaration[] = [
  { name: 'state1', url: '/state1',  component: State1Component },
  { name: 'state2', url: '/state2',  component: State2Component },
...
];

自然在我拥有的app.component中

<ui-view></ui-view>

根据路径加载适当的状态组件。问题是,在@uirouter文档和示例中,有很多有关解析函数,与状态输入配置相关的转换等信息,但是我找不到如何从状态组件本身(State1Component用于访问转换)的信息(特别是我需要url)例)。声明可以通过名称来访问参数:

@Input param1;

我尝试使用url进行操作,但未定义。  怎么做?

1 个答案:

答案 0 :(得分:0)

到目前为止,我已经找到了获取URL的方法。在状态声明中:

export let MAIN_STATES: Ng2StateDeclaration[] = [
  { name: 'state1', url: '/state1',  component: State1Component,
    resolve: [{
      token: 'transition',
      deps: [Transition],
      resolveFn: (transition) => transition
    }]
  },
...
];

在State1Component中:

export class State1Component implements OnInit {
  @Input() transition;

  url: string;

  constructor() { }

  ngOnInit() {
    this.transition.promise.then((res) => this.url = res.url);
  }
}

请告诉我是否有更好的方法。