如果用户来自移动设备,我需要替换不同的模板,如果是网络,则需要替换另一个模板。
如何在Angular中动态更改模板?
我在这里回顾了几个相同的问题,但它们都是关于Angular JS
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用ngTemplateOutlet
进行此操作:
在您的HTML中:
<ng-container [ngTemplateOutlet]="getTemplate">
</ng-container>
<div>
<button (click)="changeTemplate()"> Change Template </button>
</div>
<ng-template #webTemplate>
<h3> Hey, I'm web template</h3>
</ng-template>
<ng-template #mobileTemplate>
<h3> Hey, I'm mobile template</h3>
</ng-template>
在您的组件中:
import { Component, ViewChild, TemplateRef } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
@ViewChild('mobileTemplate') mobileTemplate: TemplateRef<any>;
@ViewChild('webTemplate') webTemplate: TemplateRef<any>;
web: boolean;
name = 'Dynamic Temmplates';
constructor() {
this.web = true;
}
get getTemplate() {
if (this.web) {
return this.webTemplate;
}
else {
return this.mobileTemplate;
}
}
changeTemplate() {
this.web = !this.web;
}
}
您可以找到 stackblitz 演示here
有关NgTemplateOutlet
here