2017-04-05 71 views
2

我需要在運行時動態更改模板URL,以便我可以更改在組件中呈現的視圖。有沒有解決方案來實現這一目標? 例如,我的組件想要網格和列表視圖,但我不想在同一個模板中創建兩個視圖,而是在單獨的模板文件中維護視圖。那麼,如何在運行時更改組件的視圖(即,用新模板替換當前模板)。提前致謝。如何在運行時動態更改templateUrl值2

+0

剛剛幾分鐘前問過非常類似的問題http://stackoverflow.com/questions/43229609/angular-cli-use-different-templates-depending-on-the-environment –

+0

嗯,你爲什麼要他們在2個不同的模板?爲什麼不用* ngIf製作2個div並處理組件中的其餘部分? –

+0

@PedroLopes Ya正確...但這是要求...因此,用戶可以在選擇器標記中輸入模板url作爲輸入.. – Manush

回答

0

Angular不支持在運行時更改模板URL,因爲在編譯時模板中的Angular特定結構將被轉換爲JavaScript。

你可以做的是

<ng-container *ngIf="isFoo"> 
template1 
</ng-container> 
<ng-container *ngIf="!isFoo"> 
template2 
</ng-container> 

或者你可以在運行時動態地創建組件,你需要包括動態運行到部署。目前這完全阻止了AoT(有人提到一些黑客可以在某處合作,但我還沒有嘗試過)。 通過這種方式,您可以在組件創建時定義要使用的模板。