UI-路由器状态包括 属性 出现问题:属性 'includes' 在类型 'StateDeclaration' 上不存在

UI-Router state includes property gets issue: Property 'includes' does not exist on type 'StateDeclaration'

在状态转换开始之前,我需要检查目标状态是否在某个父状态下。 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-路由器。

这是 @uirouter/core 中的错误。提供给回调的对象是 StateObject(通常被认为是内部对象)。打字说它是一个 StateDeclaration 这是你用来注册状态的对象。

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

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

出于向后兼容的原因,我认为 ui-router 的下一个版本将简单地更新类型以采用 StateObject