Spartacus - 从 Spartacus 的 PDP 页面访问用户对象?
Spartacus - accessing user object from PDP page of Spartacus?
我是 SPA 的新手,我正在尝试扩展 PDP 以使用单击按钮将某些数据发送到外部 API。
我已经能够在 app.component.ts
中使用 @spartacus/storefront
中的 ProductDetailsOutlets
检索产品对象
import { Component } from '@angular/core';
import { ProductDetailOutlets } from '@spartacus/storefront';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
title = 'wishlistStore';
pdpOutlets = ProductDetailOutlets;
}
app.component.html
看起来像这样。
<cx-storefront></cx-storefront>
<ng-template [cxOutletRef]="pdpOutlets.SUMMARY" let-product>
<!-- {{ product | json }} -->
<app-wishlist-button [productDetails]="product"></app-wishlist-button>
</ng-template>
这里的问题是有没有办法在 Spartacus 中使用上述方法 access/retrieve 当前登录的用户对象,如何实现?
提前致谢!
在 Spartacus 3.4 中访问登录用户数据的最佳方法是使用 UserAccountFacade
.
中的 get()
方法
在您的 app-wishlist-button
组件中,您可以添加以下代码:
import { Component } from '@angular/core';
import { User } from '@spartacus/core';
import { UserAccountFacade } from '@spartacus/user/account/root';
import { Observable } from 'rxjs';
@Component({
selector: 'app-wishlist-button',
templateUrl: 'wishlist-button.component.html',
})
export class WishlistButtonComponent {
user$: Observable<User> = this.userAccountService.get();
constructor(protected userAccountService: UserAccountFacade) {}
}
您将获得一个包含用户数据的 Observable。然后您可以在您的 Typescript 文件中订阅它:
onClick() {
this.user$.subscribe((user: User) => {
// You can access user here
});
}
或在您的 html:
中使用它
<ng-container *ngIf="user$ | async as user">
<button (click)="onClick(user)">Do Action</button>
</ng-container>
我是 SPA 的新手,我正在尝试扩展 PDP 以使用单击按钮将某些数据发送到外部 API。
我已经能够在 app.component.ts
@spartacus/storefront
中的 ProductDetailsOutlets
检索产品对象
import { Component } from '@angular/core';
import { ProductDetailOutlets } from '@spartacus/storefront';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
title = 'wishlistStore';
pdpOutlets = ProductDetailOutlets;
}
app.component.html
看起来像这样。
<cx-storefront></cx-storefront>
<ng-template [cxOutletRef]="pdpOutlets.SUMMARY" let-product>
<!-- {{ product | json }} -->
<app-wishlist-button [productDetails]="product"></app-wishlist-button>
</ng-template>
这里的问题是有没有办法在 Spartacus 中使用上述方法 access/retrieve 当前登录的用户对象,如何实现?
提前致谢!
在 Spartacus 3.4 中访问登录用户数据的最佳方法是使用 UserAccountFacade
.
get()
方法
在您的 app-wishlist-button
组件中,您可以添加以下代码:
import { Component } from '@angular/core';
import { User } from '@spartacus/core';
import { UserAccountFacade } from '@spartacus/user/account/root';
import { Observable } from 'rxjs';
@Component({
selector: 'app-wishlist-button',
templateUrl: 'wishlist-button.component.html',
})
export class WishlistButtonComponent {
user$: Observable<User> = this.userAccountService.get();
constructor(protected userAccountService: UserAccountFacade) {}
}
您将获得一个包含用户数据的 Observable。然后您可以在您的 Typescript 文件中订阅它:
onClick() {
this.user$.subscribe((user: User) => {
// You can access user here
});
}
或在您的 html:
中使用它<ng-container *ngIf="user$ | async as user">
<button (click)="onClick(user)">Do Action</button>
</ng-container>