web-dev-qa-db-ja.com

Angular 4でnullのプロパティ 'outlets'を読み取ることができません

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 (

エラーの原因は明らかなようです。 article変数はHttpから非同期にフェッチされ、ページがレンダリングされた後に初期化されるため、最初はnullです。しかし、私は置くと思った?この変数を使用すると、この問題を回避できます。

あなたがアドバイスしていただけますか?

17
Sergey

? in article?.idは正常に機能していますが、RouterLinkディレクティブはnullが渡されるのを好みません。

次のようなものを使用して回避できます。

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