2017-09-05 37 views
1

我嘗試實施角嵌套翻譯(鏈接的內容有翻譯,而這個鏈接已經被嵌入到另譯),這一切都歸結爲我以下情形:如何在插入Angular 4時插入模板?

<ng-template #link> 
    <a href="#">Test</a> 
</ng-template> 

<p>Your link: {{link}}</p> 

但是,在上述情況下link是TemplateRef對象。所以我的問題是,我如何用TemplateRef的內容替換大括號的內容?

預先感謝您!

+0

您期望得到的html是什麼? –

回答

3

更新角5

ngOutletContext更名爲ngTemplateOutletContext

參見https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29

NgTemplateOutlet你想要做什麼:

<p>Your link: <ng-container *ngTemplateOutlet="link"></ng-container></p> 

您還可以傳遞要用於模板內綁定的上下文數據。

https://angular.io/api/common/NgTemplateOutlet

搜索NgTemplateOutlet在計算器上應該提供一些更多的例子。

更新

<ng-template #linkTemplate let-link> 
    <a href="#">{{link}}</a> 
</ng-template> 

<p>Your link: <ng-container *ngTemplateOutlet="linkTemplate; context: {$implicit: link}"></ng-container></p> 

Plunker example

+0

謝謝您的及時答覆!我有一個後續問題:'你的鏈接:{{link}}'實際上是來自外部API的翻譯,我寧願在我的翻譯中不要有''我想保留它作爲'{{link}}',但有什麼辦法可以強制執行嗎? – nakajuice

+0

對不起,那我可能不明白這個問題。 ''會導致名稱衝突,因爲'#link'引入了一個模板變量,指向''你在用什麼'#link'呢? –

+0

我更新了我的答案。仍然不確定,如果這是你想要的。 –

0

您還可以安裝一個模板,在下面的方法條件。如果您想在其他條件下加載您的模板。

<ng-content *ngIf="!content; else link"> 

    </ng-content> 
    <ng-template #link> 
     <div [innerHtml]="otherContent"> 

     </div> 
    </ng-template> 
    </div>