当前位置: 首页 > 面试题库 >

是否可以在Angular 2中动态更改全局样式表?

水瀚漠
2023-03-14
问题内容

是否可以动态更改全局样式表?

编辑:目的是允许用户选择他喜欢的样式。

在Angular 1中,我能够将控制器包装在head标签周围并在其中使用绑定。

下面的示例(简化代码):

index.html

<!DOCTYPE html>
<html ng-app="app" ng-controller="AppController">
<head>
    <title>Title</title>
    <link rel="stylesheet" ng-href="styles/{{current}}"/>
</head>
...

AppController

app.controller('AppController', ['$scope', function ($scope ) {
    $scope.current = dynamicValue;
}]);

在Angular 2中有可能吗?


问题答案:

我最终使用了Igor在这里提到的DOCUMENT令牌。

从那里,我可以将href换成样式。

HTML:

<head>
   <link id="theme" rel="stylesheet" href="red.css">
</head>

TS:

import { Component, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/platform-browser';

@Component({})
export class MyClass {
    constructor (@Inject(DOCUMENT) private document) { }

    ngOnInit() {
      this.document.getElementById('theme').setAttribute('href', 'blue.css');
    }
}


 类似资料:
  • 问题内容: 是否可以使用JavaScript更改CSS样式表? 我 不是 在说: 我 AM 谈论改变: 除了做一些肮脏的事情(我们还没有尝试过)之外,比如在头部创建一个新对象,innerHTML在其中创建一个样式标签,等等。尽管这样做确实可行,但仍会带来一些样式问题块已经在其他地方定义了,我不确定何时/是否浏览器会解析动态创建的样式块? 问题答案: 浏览器支持已得到很大改进(支持所有浏览器,包括I

  • 问题内容: 是否可以使用或在angular2中更改伪元素的样式? 为了使div上的模糊效果像叠加层一样,我应该在伪元素上设置背景图像。 我尝试了类似的东西 它没有用。我也试过了 问题答案: 不,这不可能。实际上,这不是一个Angular问题:伪元素不是DOM树的一部分,因此不会暴露任何可用于与其交互的DOM API。 如果要以编程方式处理伪元素,通常的方法是间接的:添加/删除/更改类,并在CSS中

  • 问题内容: 的 多重嵌套视图 功能非常好-您可以轻松地从应用程序的一种 状态 跳到另一种 状态 。 有时您可能想更改URL,但有时不需要。我觉得 状态 的概念应该与 route 分开/可选。 这是一个说明我意思的朋克。 这是文档中的一个小工具的分支,下面有2个小更改: 这似乎可行-URL保持不变。同样,这里做了多少多余的工作?这是经过批准/测试的用法吗? 如果您可以省略某个州的信息,那就太好了。

  • 在react组件中,通常不应在其中变异道具。此外,家长只能更改道具,不能直接更改状态。基于这两个事实,假设在任何componentDidUpdate调用中,例如。, 只读 这道具可能与prevProps不同,或者与此不同。状态可能与状态不同,但这两种情况不能同时发生?

  • 问题内容: 所以…例如,我正在尝试将一个电子邮件“模板”引入iframe中,作为angularjs应用程序内用户的“预览”。iframe位于控制器区域内(我们称其为MainCtrl)。然后,用户将能够使用MainCtrl内提供的表单元素基于其输入来更新预览。举例来说,假设我们将模板拉入iframe的过程如下所示: 因此,在我们的index.html(angularjs应用)中,我们将具有绑定到{{

  • 问题内容: 我使用以下全局jQuery来显示和隐藏装载的电话: 这可以正常工作,但是我不想显示自动完成的加载div,所以我添加了以下内容: 然后,要重置“正常” 通话,请执行以下操作: 所有这些对于使用页面加载构造的文本输入都很好。但是,在几种情况下,文本输入是使用jQuery / Javascript在客户端动态插入的,在这种情况下 ,事件不会绑定到全局函数。我也尝试过: 但这也不起作用。有什么