angular - Angular 动态切换模板html,scss

标签 angular typescript angular6

我有如下格式的标题组件:

app-header (folder)
     classic (folder)
         app-header.component.html
         app-header.component.scss

    elegant (folder)
         app-header.component.html
         app-header.component.scss

    simple (folder)
         app-header.component.html
         app-header.component.scss

 app-header.component.ts

我想在这些模板文件夹之间切换(经典、优雅、简单) 动态地。我的意思是,通过 http 请求从 db 获取模板文件夹名称,并分别从该文件夹加载 html 和样式。

我是通过在环境变量中设置文件夹名称并根据它加载来完成的。我如何通过调用 API 并根据它加载 html 和样式来设置该环境变量?

以下是我尝试从 app-header-component.ts 中的环境变量加载的代码

import { Component, OnInit } from '@angular/core';
import { ConfigService } from './../config.service';
import { environment } from './../../environments/environment';

let theme_name  = environment.theme_name;

const header      = require('./' + theme_name + '/app- 
header.component.html');

const style     = [require('./' + theme_name + '/app- 
header.component.scss')];

@Component({
    selector: 'app-header',
    template: header,
    styles: style
})

最佳答案

父组件可以跟踪主题并让它决定呈现哪个标题组件。

<app-header-classic *ngIf="theme === 'classic'"></app-header-classic>
<app-header-elegant *ngIf="theme === 'elegant'"></app-header-elegant>
<app-header-simple *ngIf="theme === 'simple'"></app-header-simple>

关于angular - Angular 动态切换模板html,scss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56868422/

相关文章:

javascript - 从 FormControl 中的 mat-datepicker 中获取值(value)

typescript - typescript 在声明或转换/转换时是否有禁止 "any"的选项?

angular6 - 如何在 Angular cli 6.0.1 中创建 Angular 5 项目

html - 在 Angular 6 中折叠/展开嵌套的 div

javascript - Ionic 和 Angular - 可重复使用的 'next page' 按钮

使用 typescript 的 Mongoose 模式/模型

javascript - Angular 服务中的 EventEmitter 是好是坏?

angular - 获取选择一个菜单的默认值

javascript - "angular2-image-upload"npm 库 CORS 错误

angular - 什么时候使用 *ngIf ="isProductSearchEmpty"或 [style.display] ="displayProduct"?