angular2:如何通过条件手动将css文件添加到index.html?

nas*_*ngW 5 css external angular-cli angular

下面的代码是为样式定义的.

<!-- for mobile -->
<link rel="stylesheet" href="/dist/css/mobile.css">

<!-- for desktop -->    
<link rel="stylesheet" href="/dist/css/desktop.css">
Run Code Online (Sandbox Code Playgroud)

我想按条件将上面的文件添加到'src/index.html'中的<head>.

如何为每个设备应用css文件?

如您所知,我不能在'index.html'中使用'条件'代码.

请注意,我不会使用以下方法.

// in angular-cli.json
"apps": [
    {
        "root": "src",
        "index": "index.html",
        "styles": [
            "/dist/css/mobile.css",
            "/dist/css/desktop.css"
        ]
    }
]


// in component.ts
@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrl: '/dist/css/mobile.css'
})
Run Code Online (Sandbox Code Playgroud)

我期待着你的建议.

谢谢.

Abd*_*oof 14

要动态加载或更改CSS,您可以执行以下操作:

  1. 在index.html中:

    您将拥有如下的样式表链接:

    <link id="theme" href="assets/light.css" rel="stylesheet" >

    请注意,链接元素有"id".

  2. 在您的组件中,您将具有以下内容:

    从平台浏览器导入DOCUMENT

    import { DOCUMENT } from "@angular/platform-browser";

    然后,在你的行动或初始你将相应地改变你的CSS:

    this.document.getElementById('theme').setAttribute('href','assets/dark.css');

默认情况下,您将加载一个CSS文件..让我们说desktop.css.在应用程序的根组件中,您可以查找设备或cookie,或设置一些条件以从desktop.css更改为mobile.css.就像你说的那样,你不会使用angular-cli.json加载你的CSS.

  • DOCUMENT 现在是从 @angular/common 导入的。上述导入语句已被弃用。 (2认同)