2017-09-14 21 views
0

主成分:角4:如果有多個組件具有相同的選擇器,如何根據某些條件只加載一個組件?

@Component({ 
    selector: 'app-root', 
    template: '<app-report></app-report>' 
}) 

組分1:

@Component({ 
    selector: 'app-report', 
    templateUrl: './trip.report.html' 
}) 

COMPONENT2:

@Component({ 
    selector: 'app-report', 
    templateUrl: './user.report.html' 
}) 

是否有任何方式在角度4,通過這些基於一些條件,其中成分(組分1或2)會根據某些條件加載到「主要組件」中?

+2

我在這種特殊情況下不知道爲什麼你他們的名字一樣,考慮到只有通過查看模板的名稱,他們都涉及到完全不同的元素 –

回答

3

沒有辦法做到這一點。選擇器對於在一個NgModule中聲明並導入到其中的所有組件和指令都必須是唯一的。

如果您擁有該代碼,則不要創建衝突的選擇器。

如果導入的第三方模塊的組件具有衝突的選擇器,則可以使用非衝突選擇器將衝突組件包裝到另一個組件中,並將其添加到其自己的模塊中。 然後,您可以在@NgModule({imports: [...]})中指定應使用哪個組件。

然後,你可以使用*ngIf

<conflicting-component *ngIf="foo"></conflicting-component> 
<de-conflicted-wrapper *ngIf="!foo"></de-conflicted-wrapper> 
相關問題