10 Jerry Wang

SAP成都研究院 - 数字创新空间开发专家

我要认证

JerryWang,2007年从电子科技大学计算机专业硕士毕业后加入SAP成都研究院工作至今。Jerry是SAP社区导师,SAP中国技术大使。2020年5月下旬,Jerry做了脑部肿瘤的开颅切除手术,对编程和人生又有了新的感悟。

等级
TA的排名 30

rxjs fromEvent的用法

源代码:import { of, fromEvent, interval, Observable } from 'rxjs';import { Injectable } from '@angular/core';import { map, switchMap } from 'rxjs/operators';import { tap } from 'rxjs/operators';import { OperatorFunction } from 'rxjs';@Injectable()expo

2020-09-19 18:59:26

用代码查看SAP Spartacus购物车内的行项目

效果如下图所示: 我打开SAP Spartacus任意一个产品主数据的明细页面,希望看到这个产品在当前购物车里的数量:具体实现一行TypeScript代码可以搞定:quantity$: Observable<any> = this.product$.pipe(switchMap(product => this.cartService.getEntry(product.code)), filter(entry => !!entry), map(entry =&gt

2020-09-19 12:45:21

rxjs的map和switchMap在SAP Spartacus中的应用

Type Observable<Observable> is not assignable to type Observable.看这行代码:quantity$: Observable<number> = this.product$.pipe(map(product => this.cartService.getEntry(product.code));返回的参数类型是:Observable<Observable>使用switchMap就可以将嵌套的Ob

2020-09-19 12:42:38

用代码查看SAP Spartacus购物车内的行项目

代码: JerryOrderEntry$: Observable<OrderEntry[]> = this.cartService.getEntries(); constructor(private currentProductService: CurrentProductService, private cartService: ActiveCartService ) { }html代码:<h1>{{ productName$ | async }} <

2020-09-19 12:10:38

关于rxjs里operators filter和map的详细讨论

看这段代码:product$: Observable = this.currentProductService.getProduct().pipe(this.jerryfilter);pipe接受一个参数,类型为OperatorFunction<Product, Product>, 这个类型是一个函数,接收的类型参数为Product,Product,返回类型仍然为Observable:因此定义一个函数jerryfilter,类型就为OperatorFunction<Produc

2020-09-19 11:25:08

SAP Spartacus产品明细页面用Observable显示产品名称

具体实现:import { Component, OnInit } from '@angular/core';import { ActiveCartService, Product } from '@spartacus/core';import { CurrentProductService } from '@spartacus/storefront';import { Observable } from 'rxjs';import { filter, map } from 'rxjs/oper

2020-09-19 11:03:35

SAP Spartacus CurrentProductService返回的null对象

使用如下的代码监控getProduct可能返回的null值:import { Component, OnInit } from '@angular/core';import { ActiveCartService, Product } from '@spartacus/core';import { CurrentProductService } from '@spartacus/storefront';import { Observable, OperatorFunction } from 'rxj

2020-09-19 11:02:11

SAP Spartacus CurrentProductService.getProduct方法的实现原理

注入CurrentProductService:看看这个currentProductService又包含哪些属性:scope为undefined:如果从routeState里能提取到productCode信息,就调用this.productService.get读取product信息,否则返回一个缺省的Observable对象:of(null).distinctUntilChanged是rxjs标准的util方法:当我打开url http://localhost:4200/electro

2020-09-19 11:00:45

Angular Component class属性初始化和构造函数执行的先后顺序

如图,该Component类第13行属性初始化逻辑,以及第17行构造函数里的断点,到底哪一行代码先执行?在调试器里观察:首先执行custom Component factory函数,创建Component实例:第13行代码首先被执行:注意此时的this:然后构造函数才被执行,此时this.product$已经可用了,原型为Observable:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-17 22:53:48

SAP Spartacus注入自定义的CurrentProductService

import { Component, OnInit } from '@angular/core';import { ActiveCartService, Product } from '@spartacus/core';import { CurrentProductService } from '@spartacus/storefront';import { Observable } from 'rxjs';@Component({ selector: 'app-mycom', temp

2020-09-17 22:31:16

我的工作日报 - 2020年9月17日 星期四

as suggested by my buddy Kacper, today I am learning Angular dependency injection mechanism,and I create my own product adapter, product name normalizer and current product service, to replace the standard one via dependency injection. I hard code some da.

2020-09-17 18:55:29

SAP Spartacus注入自定义的CurrentProductService

新建一个MyCurrentProductService,返回一个硬编码的产品主数据:完整源代码如下:import { Product, ProductScope } from '@spartacus/core';import { Observable, of } from 'rxjs';const PRODUCT: Product = { code: '300938', name: 'Jerry hard code value', summary: 'Jerry hard

2020-09-17 16:30:48

SAP Spartacus当前产品主数据数据格式的一个例子

价格和图片:图片明细:库存信息:产品类别信息:要获取更多Jerry的原创文章,请关注公众号"汪子熙":

2020-09-17 16:02:21

获取SAP Spartacus当前显示产品json数据的又一办法

app Component里注入current Product service:实现代码:import { Component, OnInit } from '@angular/core';import { ContentSlotComponentData } from '@spartacus/core';import { CurrentProductService } from '@spartacus/storefront';import { DebugConfig } from './app

2020-09-17 15:58:09

使用Angular依赖注入自定义SAP Spartacus的ProductAdapter

新建一个MyProductAdapter,继承自SAP Spartacus的ProductAdapter,返回一些fake数据:import { Injectable } from '@angular/core';import { Product, ProductAdapter, ScopedProductData } from '@spartacus/core';import { Observable, of } from 'rxjs';const PRODUCT = { code: '30

2020-09-17 15:14:07

SAP Spartacus的ProductAdapter和OccProductAdapter

路径:C:\Code\SPA\spartacus\projects\core\src\occ\adapters\product\occ-product.adapter.ts通过这种机制,将SAP Spartacus加载的product同Commerce Cloud后台解耦。比如,我们可以实现一个ERPProductAdapter,然后用Angular的依赖注入,替换掉从Commerce Cloud后台取product主数据的OccProductAdapter:...

2020-09-17 14:12:24

Angular getOrCreateInjectable的实现原理调试

入口:GreetingService是我在Angular项目里定义的abstract service,没有加上@Injectable注解:return this._r3Injector.get(token, notFoundValue, injectFlags);this的source为AppModule,records map里已经包含了70个元素:我实现GreetingService的具体实现类,EnglishGreetingService,已经在这70个元素map里了:这归功于我

2020-09-17 13:59:07

Angular依赖注入的一个常见错误NullInjectorError,No provider for XXX

测试代码:export abstract class GreetingService { abstract greet(name: string): string; }加了@Injectable注解的实现类:import { Injectable } from '@angular/core';import { GreetingService } from './greeting.service';@Injectable({ providedIn: 'root'})export c

2020-09-17 13:42:30

Angular依赖注入的一个例子和注入原理单步调试

定义一个抽象服务类:export abstract class GreetingService { abstract greet(name: string): string; }定义一个具体类实现该抽象类:import { Injectable } from '@angular/core';import { GreetingService } from './greeting.service';@Injectable({ providedIn: 'root'})export c

2020-09-17 13:20:02

蛙泳如何找准背部发力的感觉

蛙泳是四种泳姿中最容易学的泳姿,也是最难提高的泳姿。之所以易学难精是因为它的技术动作要点多,要求配合精准。正确发力是衡量一个人蛙泳水平的试金石,一般的爱好者基本都不知道什么时候发力,如何发力。掌握了正确发力的知识,使你的蛙泳水平顺利晋级。蛙泳的发力点有二处,一处是内划起身抬头的发力,它要求背部肌肉发力,划臂把上身拉高,防止腿部立起来加大阻力面。讲求的是蛇腰拖髋,发力的动作是挺腹塌腰。胯部此时是要用点力往下沉的,只有感觉它沉了(也感觉重了),才能更好的平稳着往前上方拖(拖胯)。设想如果轻如皮球,那拖动的效果

2020-09-17 12:13:35

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。