首页 > 解决方案 > 当 Angular 路由器防护 canActivate 在路由更改时返回 no 时,“无法读取未定义的属性 'nodeName'”

问题描述

在我使用具有主状态和子状态的路由器的 Angular 7 应用程序中,Guard 可以帮助我防止用户在表单填写过程中访问他们在给定时刻无法访问的状态。所以基本上我的 Guard 在让用户访问下一步之前检查所有以前的状态表单是否有效。当 Guard 的 canActivate 方法说没问题时,一切都很好,但是当它返回 false 时,我得到了这个我在控制台中无法理解的错误:

zone.js:199 Uncaught TypeError: Cannot read property 'nodeName' of undefined
    at i.t._activate (bootstrap.min.js:6)
    at i.t.show (bootstrap.min.js:6)
    at HTMLAnchorElement.<anonymous> (bootstrap.min.js:6)
    at Function.each (jquery.min.js:2)
    at w.fn.init.each (jquery.min.js:2)
    at w.fn.init.i._jQueryInterface [as tab] (bootstrap.min.js:6)
    at HTMLAnchorElement.<anonymous> (bootstrap.min.js:6)
    at HTMLDocument.dispatch (jquery.min.js:2)
    at HTMLDocument.y.handle (jquery.min.js:2)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
t._activate @ bootstrap.min.js:6
t.show @ bootstrap.min.js:6
(anonymous) @ bootstrap.min.js:6
each @ jquery.min.js:2
each @ jquery.min.js:2
i._jQueryInterface @ bootstrap.min.js:6
(anonymous) @ bootstrap.min.js:6
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask @ zone.js:423
push../node_modules/zone.js/dist/zone.js.Zone.runTask @ zone.js:195
push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask @ zone.js:498
invokeTask @ zone.js:1744
globalZoneAwareCallback @ zone.js:1770

在这里,我遇到了这个错误并尝试逐步运行该应用程序。知道问题的根源或建议在哪里搜索吗?谢谢!

标签: angularangular-router-guards

解决方案


推荐阅读