2

Resolvers forと少し混乱していroutesます。リゾルバーが解決してくれる問題は、レンダリング時にオブジェクトがコンポーネントに存在することです。リゾルバーなしでそれを行い、Promise を介してコンポーネントのコンストラクターでオブジェクトのフェッチを開始すると、テンプレートのネストされたプロパティに次のようにアクセスします

{{myObj.foo.bar}}

Promise が十分に早期に解決されない場合、エラーが発生する可能性があります。これは、http 要求を実行する必要がある場合に発生する可能性が非常に高いです。ただし、リゾルバーから解決されたオブジェクトを受け取ることに関する小さな情報は、コンポーネントのコンストラクターでこのようにするように指示しています

this.route.data.subscribe(val => {...});

これは前と同じくそじゃない?わかりました。バックエンド リクエストは既に完了していることを認めます。すぐにサブスクリプションを受け取ります。それにもかかわらず、解決されたデータに再び非同期でアクセスします。{{myObj.foo.bar}} は、テンプレートのレンダリング時にアクセスできる可能性が非常に高いかもしれませんが、保証はありませんね。

それがあまりにも批判的であるかどうかはわかりません。ルートに使用canActivateし、解決されたオブジェクトを Service に設定すると、任意のコンポーネントから同期的にアクセスできるようになるというのが、私の意図に近づくという直感です。

説明を楽しみにしています

4

1 に答える 1

2

テンプレート全体またはアクセスする必要がある部分を次のようにラップしmyObjます*ngIf

<ng-container *ngIf="myObj?.foo">
  {{myObj.foo.bar}}
</ng-container>
于 2016-09-27T10:46:49.317 に答える