日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP Spartacus ConfigurationService

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP Spartacus ConfigurationService 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

位于文件configuration.service.ts內:

import { Inject, Injectable, OnDestroy } from '@angular/core'; import { BehaviorSubject, Observable, Subscription, zip } from 'rxjs'; import { deepMerge } from '../utils/deep-merge'; import { isFeatureEnabled } from '../../features-config'; import {Config,ConfigChunk,DefaultConfig,DefaultConfigChunk,RootConfig, } from '../config-tokens'; import { UnifiedInjector } from '../../lazy-loading/unified-injector'; import { skip, tap } from 'rxjs/operators';@Injectable({providedIn: 'root', }) export class ConfigurationService implements OnDestroy {/*** Will emit unified configuration when some ambient configuration will appear** Ambient configuration can appear when we lazy load module with configuration*/readonly unifiedConfig$: Observable<any>;/*** Global application configuration*/readonly config: any;private readonly ambientDefaultConfig: any = {};private readonly ambientConfig: any = {};private subscription: Subscription;constructor(@Inject(RootConfig) protected rootConfig: any,@Inject(DefaultConfig) protected defaultConfig: any,protected unifiedInjector: UnifiedInjector,@Inject(Config) config: any) {this.config = config;this.unifiedConfig$ = new BehaviorSubject(config);// We need to use subscription to propagate changes to the config from the beginning.// It will be possible to make it lazy, when we drop this compatibility feature// in the future.this.subscription = this.feedUnifiedConfig().subscribe();}private feedUnifiedConfig(): Observable<any> {const configChunks$: Observable<object[]> = this.unifiedInjector.get(ConfigChunk,[]);const defaultConfigChunks$ = this.unifiedInjector.get(DefaultConfigChunk,[]);return zip(configChunks$, defaultConfigChunks$).pipe(// we don't need result from the root injectorskip(1),tap(([configChunks, defaultConfigChunks]) =>this.processConfig(configChunks, defaultConfigChunks)));}private processConfig(configChunks: any[], defaultConfigChunks: any[]) {if (defaultConfigChunks?.length) {deepMerge(this.ambientDefaultConfig, ...defaultConfigChunks);}if (configChunks.length) {deepMerge(this.ambientConfig, ...configChunks);}if (configChunks.length || defaultConfigChunks.length) {this.emitUnifiedConfig();}}private emitUnifiedConfig(): void {const newConfig = deepMerge({},this.defaultConfig,this.ambientDefaultConfig,this.ambientConfig,this.rootConfig);(this.unifiedConfig$ as BehaviorSubject<any>).next(newConfig);// compatibility mechanism, can be disabled with feature toggleif (!isFeatureEnabled(this.config, 'disableConfigUpdates')) {deepMerge(this.config, newConfig);}}ngOnDestroy(): void {if (this.subscription) {this.subscription.unsubscribe();}(this.unifiedConfig$ as BehaviorSubject<any>).complete();} }

Service實現類上的@Injectable注解:@injectable 一般用在Angular的Service中,表明該Service實例可以注入到其他的service、component或者其他實例里面。換言之,其他的實例要依賴被該@Injectable修飾的類。

通過注入的config對象,能查看到SAP Spartacus所有全局的配置信息:

比如occ endpoint:

base site:


所有界面使用到的圖標:

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的SAP Spartacus ConfigurationService的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。