【发布时间】:2021-07-31 09:39:01
【问题描述】:
产品组件-
export class ProductComponent implements OnInit {
constructor(
private route: ActivatedRoute,
private router: Router,
) { }
ngOnInit() {
this.route.data
.subscribe(
(data: Data) => {
this.router = data['product'];
}
);
}
}
我不确定我需要在 html 中添加什么 - 很想得到一些帮助 -
<div class="productContainer">
<img class="productContainer__image" src="img">
<div class="innerContainer">
<p class="innerContainer__text">text</p>
<label class="innerContainer__text">Size:</label>
<app-select [options]="['XS', 'S', 'M', 'L', 'XL']" placeholder="Size" width="100px"></app-select>
<label class="innerContainer__price">Price: 40$</label>
<div class="buttonContainer">
<button class="buttonContainer__button">Add to bag</button>
</div>
</div>
</div>
http-产品服务-
public getProduct(id: string): Observable<IGetProductResponse> {
const baseUrl = ENDPOINT;
return this.http.get<IGetProductResponse>(baseUrl + id);
}
产品-服务-
public getProduct(id: string): Observable<IProductInterface> {
return this.httpProductService.getProduct(id)
.pipe(catchError((errorResponse: HttpErrorResponse) => {
let errorMessage: string;
switch (errorResponse.status) {
case 400:
errorMessage = 'e';
break;
default:
errorMessage = 'e';
}
return throwError(errorMessage);
}),
map((response: IGetProductResponse) => response.data!),
);
}
产品解析器 -
@Injectable()
export class ProductResolver implements Resolve<IProductInterface> {
constructor(private productService: ProductService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<IProductInterface> {
return this.productService.getProduct(route.paramMap.get('id')!);
}
}
如果您需要查看更多答案代码或任何内容,我将编辑该帖子。 感谢您的帮助。
【问题讨论】:
标签: angular typescript mongodb mongoose