我有一个包含两个样式文件的组件...我想根据一些本地化参数在它们之间切换,所以我做的是
let cssFiles: Array<string> = ['./assets/css/home.component.style1.css'];
@Component({
selector: 'router-outlet',
templateUrl: './home.component.html',
styleUrls : cssFiles
})
此时,文件“home.component.style1.css”已在模板上正确应用。
但是当我尝试在构造函数中设置变量“cssFiles”时,它根本不起作用
let cssFiles: Array<string> = [];
@Component({
selector: 'router-outlet',
templateUrl: './home.component.html',
styleUrls : cssFiles
})
export class HomeComponent implements OnInit {
constructor(private localize: LocalizeRouterService) {
if(this.localize.parser.routes[0].path == "opt1")
cssFiles = ['./assets/css/home.component.style1.css'];
if(this.localize.parser.routes[0].path == "opt2")
cssFiles = ['./assets/css/home.component.style2.css'];
}
}
请注意
答案 0 :(得分:0)
你可以用一点点hacky方式做到:创建自己的装饰器。以下是如何执行此操作的示例:https://stackoverflow.com/a/39755547/6053654
答案 1 :(得分:0)
与此GitHub issue中讨论过的一样,您可以尝试执行以下操作:
@Component({
selector: 'router-outlet',
templateUrl: './home.component.html',
styleUrls : './assets/css/base.ss'
})
export class HomeComponent implements OnInit {
constructor(private localize: LocalizeRouterService) {
if(this.localize.parser.routes[0].path == "opt1")
require("style-loader!./assets/css/home.component.style1.css");
if(this.localize.parser.routes[0].path == "opt2")
require("style-loader!./assets/css/home.component.style2.css");
}
}