4
シードに基づいて角度アプリケーションがあります。何かを表示する前にすべてのデータの読み込みを待つ必要があります。それは私のapp.module.ts
中のプロバイダで行われます。読み込みが完了する前にHTMLからパラメータを取得する
<rmalbum-app data-id="<?php print $album_id; ?>">Loading...</rmalbum-app>
唯一の方法:
providers: [
AlbumConfig,
UserConfig,
{
provide: APP_INITIALIZER,
useFactory: (config: AlbumConfig) =>() => config.load(),
deps: [AlbumConfig],
multi: true
}
],
問題は、(最終的にresolve(true)
を発射する)config.load
サーバによってHTMLページに指定されたidを必要としています私は、このパラメータはapp.component
のコンストラクタである取得することが分かっ:
albumConfig.id= this.elementRef.nativeElement.getAttribute('data-id');
問題は、このコンストラクタがオンになっていることです初期化の後に呼び出されます。
だから私はどちらかが時系列に、持っている:
config.load()
- "読み込んでいます..."
app.component
のコンストラクタが呼び出され、私は遅すぎるconfig.load
、またはAPP_INITIALIZERを削除して、コンポーネントのコンストラクタにconfig.load()
を入れた場合:
- 「ロード...」
app.component
のコンストラクタが呼び出され、私はそれが意味するのでことを望んでいない、手動でコンストラクタ
から呼び出さID
config.load()
を得る消えますconfigが実際にロードされる前にアプリケーションが表示されます。
を使用しています。 –
'albumConfig.id = document.querySelector( 'app-element')の使用はどうですか?getAttribute( 'data-id'); –
@GünterZöchbauer回答として投稿してください。 – Kodiak