2017-10-18 115 views
0

我們正在使用angular爲我們的核心應用程序構建一個很好的組件前端。我們有多個客戶請求對這些核心組件進行非常小的定製。我想在NPM包中保留我們的核心代碼,然後通過在每個客戶端應用程序中擴展組件進行微小的修改。使用相同的選擇器擴展組件 - Angular 2/Angular-CLI

爲了做到這一點,我需要擴展一個子組件,但保持相同的選擇器(否則我必須修改每個父組件)。

我已經能夠通過將原始組件導入擴展組件並使用指向templateUrl的node_modules的相對鏈接,通過aot = false構建完成此操作。然後,我在app.module中聲明擴展組件,並從app.module中刪除原始組件(因此選擇器不會發生衝突)。

這工作正常,只要aot = false,但與一個真正的,我得到一個「錯誤在無法確定模塊的類」錯誤的構建原始組件。

是否有任何方法可以從另一個組件擴展一個組件,使選擇器保持相同,並仍然受益於AOT編譯?

+1

您可以使用不帶'@Component()'註釋的基類,只將其添加到具體的實現部分。 –

回答

0

不確定你可以在不改變策略的情況下實現目標(看看selector-conflicts)。個人而言,我會嘗試使用dynamic component loader機制與客戶類(Injection Beyond Classes)結合使用,以便正確實施您的組件:如果您有客戶,請加載該組件;否則是默認的。

當然,組件會有不同的選擇器。