だから私はangular 5:
@Injectable()
export class AppResolver implements Resolve<MyComplexObject []> {
constructor(private myService: MyService) {
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<MyComplexObject[]> {
return this.myService.getMyApi(myOption); // my option is a string
}
}
現在、myOptionはハードコードされた文字列であり、変更したい
私のルーティングモジュールには次のものがあります。
resolve: {
myResolver: AppResolver
}
ここでmyOption文字列の値を指定する必要があると思いますが、どのようにしたらよいでしょうか。
または、実際にリゾルバーと呼んでいる場所
this.route.data.map(data => data.myResolver).subscribe(
result => {
// do something with the result (specify who the myOption is?? How)
}
);
パラメータは必ずしもブラウザに表示されるとは限りません:
これはURLの一部になります:/.../.../ myString /。
しかし、それはparamによって導入されていません:url:/..& myParam = paramValue
そのため、myParamを使用してURLから識別し、置き換えることはできません
data
をresolver
に送信する例を次に示します。
ルート構成:
{
path: 'project/:id',
component: ProjectComponent,
resolve: { data: AppResolver },
data: { resolvedata: 'myValue' }
}
リゾルバー:
@Injectable()
export class AppResolver implements Resolve<MyComplexObject []> {
constructor(private myService: MyService, private router: Router) {}
resolve(route: ActivatedRouteSnapshot): Observable<MyComplexObject[]>|boolean {
let myParam = route.data['resolvedata'];
console.log(myParam);
}
}