我有Angular 4.3.6项目,其中模板片段产生此错误.
模板块:
<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 (
Run Code Online (Sandbox Code Playgroud)
错误原因似乎很明显.article变量从Http获取异步并在页面呈现后初始化,因此首先它为null.不过我认为那么推?在此变量之后允许避免此问题.
你能给些建议么?
错误说明
角度版本:2.3.1
我的单元测试无法创建组件 - 我知道这个问题与[routerLink]和[routerLinkActive]指令有关,因为从模板中删除它们允许测试创建组件.
模板
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button class="navbar-toggle" data-toggle="collapse" data-target="#iotahoe-top-navigation">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" [routerLink]="['/']">IoTahoe</a>
</div>
<div class="collapse navbar-collapse" id="iotahoe-top-navigation">
<ul *ngIf="isAuthenticated()" class="nav navbar-nav navbar-right">
<li [routerLinkActive]="['active']"><a [routerLink]="['/dashboard']">Dashboard</a></li>
<li [routerLinkActive]="['active']"><a [routerLink]="['/browse']">Browse</a></li>
<li [routerLinkActive]="['active']"><a [routerLink]="['/admin']">Admin</a></li>
<li [routerLinkActive]="['active']"><a (click)="onLogout()" style="cursor: pointer;">Logout</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
打字稿
import { Component, OnInit } from '@angular/core';
import { AuthenticationService } from '../../authentication/authentication.service';
import { Router } …Run Code Online (Sandbox Code Playgroud)