SAP Spartacus B2B 頁面資訊提示圖示的彈出視窗顯示實現邏輯

注销發表於2021-04-11

這個彈出視窗的技術實現,透過SAP Spartacus 自定義的popover Component實現而成:

注意,當我剛接觸Angular時,誤以為下圖示號為1的a標籤,和標號為2的自定義標籤cx-org-toggle-status, 會按照其在unit-details.component.html裡出現的先後順序,出現在最終的頁面裡。

實際上,我這種理解是錯誤的。

SAP Spartacus B2B 頁面如下圖右邊高亮區域所示,技術上實現在cx-org-card 選擇器對應的CardComponent裡:

Card的layout即佈局設定,實現在card.component.html裡:

其中class為actions的div標籤,作為一個place holder,容納所有消費CardComponent selector, 即cx-org-card時傳入的包含屬性actions的DOM元素。

這種動態注入元素的機制,透過下列語句完成,稱為content projection:

ng-content select="[actions]"

也就是說:下圖示號為1的a標籤,和標號為2的cx-org-toggle-status標籤頁,因為都帶有actions的屬性:

因此執行時,會出現在下圖示號為1,class為actions的div元素裡。

因此,我只需要在CardComponent的template實現,即card.component.html裡,宣告cxPopover, 這樣所有消費了CardComponent selector cx-org-card 的應用Component,都能夠自動看到 (i) icon, 而不用在Spartacus B2B 的 6個 Details Component裡,重複宣告 cxPopOver了。

更多Jerry的原創文章,盡在:"汪子熙":

相關文章