【问题标题】:Cannot read property 'outlets' of null in Angular 4无法在 Angular 4 中读取 null 的属性“出口”
【发布时间】:2020-08-28 17:50:30
【问题描述】:

我有 Angular 4.3.6 项目,其中模板 sn-p 会产生此错误。

模板块:

<a [routerLink]="['/article',article?.id]">{{article?.title}}</a>

错误堆栈跟踪:

ArticleSpComponent.html:26 ERROR TypeError: Cannot read property 'outlets' of null
    at createNewSegmentGroup (router.es5.js:2967)
    at updateSegmentGroup (router.es5.js:2896)
    at router.es5.js:2914
    at forEach (router.es5.js:593)
    at updateSegmentGroupChildren (

错误原因似乎很明显。 article 变量从 Http 异步获取并在页面呈现后初始化,因此首先它为空。但是我认为推杆?在这个变量之后允许避免这个问题。

你能建议吗?

【问题讨论】:

    标签: angular angular-router


    【解决方案1】:

    article?.id 中的? 工作正常,但 RouterLink 指令不喜欢通过 null

    您可以使用以下方法解决问题:

    <a *ngIf="article" [routerLink]="['/article',article?.id]">{{article?.title}}</a>
    <a *ngIf="!article">{{article?.title}}</a>
    

    【讨论】:

    • 谢谢你,冈特。我想过这样的解决方案。但是我怀疑 Angular 中可能存在错误。
    • 您可以将其视为一个错误,但不清楚当routerLinknull 作为路由的一部分时应该做什么。我没有看到任何合理的行为。不过,更好的错误消息可能会有所帮助。请考虑报告错误(如果还没有)
    • 我最终使用了类似的解决方案,传入了默认路由:[routerLink]="[ '/article', article?.id || 'all' ]"
    • 双管运算符替代方案对我有用。但我仍在寻找一个非解决方法:) 谢谢。
    • 我认为没有。
    【解决方案2】:
     <a  [routerLink]="['/language',language.iso639_1 || 'all']" >{{language.name}}</a>
    

    我也遇到了同样的问题(Cannot read property 'outlets' of null ) 但我编写的上述代码对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2018-03-27
      • 2019-07-03
      • 2018-05-31
      • 2018-10-11
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多