UI-Router状态包括属性获取问题:类型'StateDeclaration'上不存在属性'includes'

时间:2017-10-03 23:55:36

标签: angular angular-ui-router

在状态转换开始之前,我需要检查目标状态是否处于某个父状态。 MatchCriteria看起来像这样:

this.transition.onStart({
  to: function(state) {
    return state.includes.parentstate;
  }
},() => {...

但我收到错误提示Property 'includes' does not exist on type 'StateDeclaration'. 如果我console.log(state.includes)确实存在。有什么想法吗?

注意:该项目使用Angular 4和UI-Router。

1 个答案:

答案 0 :(得分:0)

这是@uirouter/core中的错误。提供给回调的对象是StateObject(通常被认为是内部对象)。输入说明它是StateDeclaration,它是您用来注册州的对象。

要解决此错误,请将函数参数声明为any

this.transition.onStart({
  to: function(state: any) {
    return state.includes.parentstate;
  }
},() => {...

出于向后兼容的原因,我认为ui-router的下一个版本只会更新打字以获取StateObject