天天看點

如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404

問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料

如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404
如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404
如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404

可以擴充上圖這個 Observable.

然後使用 combineLatest 和其他的 Observable 進行組合。

如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404

問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition

如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404
如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404

解決方案:

add

outletPosition = OutletPosition;

to the component,

HTML 裡添加代碼:

[cxOutletPos]="outletPosition.BEFORE"           

複制

還需要檢查:

did you add the outlets to the app component html?

例如添加如下代碼到 Component HTML:

<outlets></outlets>           

複制

問題2:HTTP 400 和 404

對于 product 明細頁面來說,随便輸入一個不存在的 url,傳回值為 HTTP 400:

https://cloudapp.azure.com:9002/occ/v2/electronics-spa/cms/pages?pageType=CategoryPage&code=5781122&lang=en&curr=USD

如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404

錯誤消息:

{
   "errors" : [ {
      "message" : "The value provided is not allowed.",
      "reason" : "invalid",
      "subject" : "code",
      "subjectType" : "parameter",
      "type" : "ValidationError"
   } ]
}           

複制

如果是 content page 請求不存在:

https://cloudapp.azure.com:9002/occ/v2/electronics-spa/cms/pages?pageType=ContentPage&pageLabelOrId=%2Ftest&lang=en&curr=USD

傳回錯誤消息:

"errors" : [ {
      "message" : "No content page found matching the provided label or id: /test",
      "type" : "CMSItemNotFoundError"
   } ]
}           

複制

客戶可以使用自定義的

renderKeyResolver

來動态決定哪個頁面應該使用哪種渲染政策,SSR 還是 CSR.

如果特定鍵缺少翻譯,則生産模式下的店面會顯示不間斷的空格字元。 為了更容易捕捉丢失的鍵,在開發模式下,Spartacus 會顯示翻譯鍵,前面有塊的名稱和冒号(例如,

[common:form.confirm]

)。

如果缺少翻譯,為了提供更好的使用者體驗,開發人員可以指定備用語言。 設定 fallbackLang 選項可確定對于每個缺失的翻譯,使用來自備用語言的等價物。

以下是使用英語作為備用語言的示例配置:

import { translations, translationChunksConfig } from '@spartacus/assets';

// ...

providers: [
  provideConfig({
    i18n: {
      resources: translations,
      chunks: translationChunksConfig,
      fallbackLang: 'en',
    },
  }),
];           

複制

翻譯由語言和命名塊構成,是以開發人員可以僅為目前語言和目前頁面加載翻譯資源。 以下是翻譯資源的結構示例:

interface TranslationResources {
  [lang: string]: {
    [chunkName: string]: {
      [key: string]: any; // value or nested object with keys
    };
  };
}           

複制

如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition問題2:HTTP 400 和 404