所以我在角度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
}
}
Run Code Online (Sandbox Code Playgroud)
现在,myOption是一个硬编码的字符串,我想更改它
在我的路由模块中,我有:
resolve: {
myResolver: AppResolver
}
Run Code Online (Sandbox Code Playgroud)
我想也许在这里我应该指定myOption字符串的值,但是如何?
或更好的地方,我实际上称为解析器
this.route.data.map(data => data.myResolver).subscribe(
result => {
// do something with the result (specify who the myOption is?? How)
});
Run Code Online (Sandbox Code Playgroud)
该参数不一定在浏览器中可见:
它将是网址的一部分:/.../.../myString/ ..
但是它不是由param引入的:url:/..&myParam=paramValue
所以我不能使用myParam从网址中识别它并替换它
这是发送data给的示例resolver,
路由配置:
{
path: 'project/:id',
component: ProjectComponent,
resolve: { data: AppResolver },
data: { resolvedata: 'myValue' }
}
Run Code Online (Sandbox Code Playgroud)
解析器:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2690 次 |
| 最近记录: |