【发布时间】:2018-10-27 07:07:22
【问题描述】:
所以我在 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/..
但它不是由参数引入的:url: /..&myParam=paramValue
所以我不能使用 myParam 从 url 中识别并替换它
【问题讨论】:
-
你想为
myOption设置哪个值 -
所以它应该被动态分配给一个枚举值,因为我应该在多个地方使用相同的解析器(每次使用不同的解析参数)并且我不想复制解析器代码。我希望这有助于澄清
-
是的,那么你可以通过
data发送一个值,同时定义路由 -
请教我如何做到这一点?
-
是的,我正在添加代码