問題1:如何在 Spartacus 使用 UserAccountFacade 在語言設定更改後重新讀取使用者資料
可以擴充上圖這個 Observable.
然後使用 combineLatest 和其他的 Observable 進行組合。
問題2:使用 outlet 時遇到錯誤消息:Type before is not assignable to type OutletPosition
解決方案:
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
錯誤消息:
{
"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
};
};
}
複制