gpt4 book ai didi

angular - 如何在 Angular 中制作通用解析器 (2+)

转载 作者:行者123 更新时间:2023-12-04 10:20:43 25 4
gpt4 key购买 nike

我希望在我的应用程序中创建一个 super 通用的 API 解析器。我希望所有“GET”请求,将来可能将其扩展到其他动词,以使用此解析器。我希望能够将请求的 URL 和动词传递给解析器,然后处理从那里进行函数调用。

此解析器将用于任何带有名为“id”的参数的 Angular 路由定义,我希望能够指定此解析器的返回类型。

这在概念上是我想要做的,但显然由于通过 Angular 实现接口(interface),它不起作用。

export class ApiResolve<T> implements Resolve<T> {
constructor(private _httpClient: HttpClient) { }

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, requestUrl: string, requestVerb: 'get'): Observable<T> {
return this._httpClient.request<T>(requestVerb, `${requestUrl}/${route.data['id']}`);
}
}

{ path: `user/:id`, component: UserComponent, resolve: { user: ApiResolver<User>('api.com/users', 'get') } }

最佳答案

似乎将信息传输到解析器的唯一可行方法是使用路由数据对象:

export class ApiResolve<T> implements Resolve<T> {
constructor(private _httpClient: HttpClient) { }

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): {
const resolverData = route.data.resolverData;
return this._httpClient.request<T>(resolverData.method, `${resolverData.url}/${route.data['id']}`);
}
}

{
path: `user/:id`,
component: UserComponent,
resolve: { user: ApiResolver<User> },
data: { resolverData: {url: 'api.com/users', method: 'get'}}
}

关于angular - 如何在 Angular 中制作通用解析器 (2+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60870662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com