角度2/4で解決すると、ルートとコンポーネントをアクティブにする前にデータを取得できます。
UserResolveサービスは、サーバーからデータを取得します。
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot} from '@angular/router';
import { UserService } from '../services/user.service';
@Injectable()
export class UserResolve implements Resolve<any> {
constructor(private service: UserService) {}
resolve(route: ActivatedRouteSnapshot) {
return this.service.getUser().then(user => user);
}
}
注:モジュール内の「UserResolve」をインポートし、プロバイダ(下記参照)で使用します。
.......
import { UserService } from '../services/user.service';
import { UserResolve } from './user.resolve';
@NgModule({
imports: [ ... ],
declarations: [HomeComponent, AboutComponent, AboutUserComponent],
providers: [UserService, UserResolve]
})
export class UserModule { }
コンポーネントをロードする前にルータモジュールで使用して、サービスを呼び出して(データを解決する)
const aboutRoutes: Routes = [
{
path: '',
component: HomeComponent,
children: [
{
path: '',
component: AboutComponent,
resolve: {
user: UserResolve
}
},
{
path: 'user',
component: AboutUserComponent
}
]
}
]
は
...ありがとうサービスを使用してコンポーネントは、ルートを持っていますか? [ルートレゾルバ](https://angular.io/guide/router#resolve-pre-fetch-component-data)を使用するアイデアを調べることができます。現時点でルーティングを使用していない場合は、動作させるためにいくつかの変更が必要なように思えるかもしれません。 –
角の初期化プロセスにフックし、APP_INITIALIZERトークンを使用してサービスの特定の機能(データを解決する機能でもよい)を実行してロードすることができます。あなたはそれを調べることができます。 –
あなたのコードを投稿してください! – Mehdi