如何在没有 CLI 的情况下在 Angular 组件中使用 less

2024-02-12

我有一个应用程序,我必须在其中配置和使用较少的内容来实现动态主题。问题是我们没有使用 angular-cli 并且这里的配置有点奇怪,所以我们手动引导 Angular 模块。

以下是应用程序的配置:

包.json

      "dependencies": {
        "@angular/common": "^4.0.0",
        "@angular/compiler": "^4.0.0",
        "@angular/core": "^4.0.0",
        "@angular/forms": "^4.0.0",
        "@angular/http": "^4.0.0",
        "@angular/platform-browser": "^4.0.0",
        "@angular/platform-browser-dynamic": "^4.0.0",
        "@angular/router": "^4.0.0",
        "@angular/upgrade": "^4.0.0",
        "@angular/animations": "^4.0.1",
        "bootstrap": "^3.3.7",
        "core-js": "^2.4.1",
        "reflect-metadata": "^0.1.8",
        "rxjs": "^5.0.1",
        "systemjs": "0.19.39",
        "zone.js": "^0.8.4"
      },
and so on..

main.ts

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
import { ThemeModule } from "./theme.module";

window.appnamespace.platform = platformBrowserDynamic();
window.appnamespace.AppModule = AppModule
window.appnamespace.ThemeModule = ThemeModule;

主题.module.ts

import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";

import { ThemeComponent } from "./theme.component";
import { ThemeToolbar } from "./Themes/theme-toolbar/theme-toolbar.component";
import { ThemePreview } from "./Themes/theme-preview/theme-preview.component";
import { ThemeService } from "./services/themeManagement.service";

const PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {
  suppressScrollX: true
};

@NgModule({
  imports: [
    BrowserModule,
  ],
  declarations: [
    ThemeComponent,
    ThemeToolbar,
    ThemePreview,
    SetFocusDirective
  ],
  providers: [ThemeService, LocalizeThemeService, CommonService],
  bootstrap: [ThemeComponent]
})

export class ThemeModule { }

它的组成部分:

@Component({
  selector: "my-theme",
  templateUrl: "../js/divdrawer/Themes/theme.template.html"
})
export class ThemeComponent implements OnInit {
  //
}

and 通过 JavaScript 引导它,如下所示:window.appnamespace.platform.bootstrapModule(window.appnamespace.ThemeModule);

主题.预览组件

@Component({
  selector: "theme-preview",
  templateUrl: "../theme-preview/theme-preview.component.template.html",
  styleUrls: ['../theme-preview/theme-style.less']
})

export class ThemePreview implements OnInit {
  // some code
}

主题风格.less:包含CSS

@import "./theme-variable.less";

// some css

主题变量.less:包含较少的变量

@header-bg        :red;
@badge-title-bg   : #ddd;

我想在主题预览组件中使用更少的变量和样式来动态更改主题。

如何仅在主题组件中配置更少。


In your @Component, 财产styleUrl具有需要一起编译成单个 CSS 文件的所有样式文件。然而,这是由 Angular CLI 完成的。

如果您打算使用 CLI 生成 CSSless,转到名为的文件angular.json并改变值schematics.@schematics/angular:component.style to 'less'.

然而,这可能对您的动态(运行时)主题没有帮助。对于动态主题,

  1. 使用导入所有较少的文件@import任意 1 个主文件中的语句
  2. 对于服务器端编译,请使用以下命令进行编译node.js server and less.js当请求 CSS 时。所以,less.js将成为您的 Node.js 项目中的生产依赖项。
  3. 对于客户端编译,请将步骤 1 中创建的主要 less 文件放入 html head 部分,如下所示。<link href="main.less" rel="stylesheet" type="text/less"/>接下来,导入less.js进入main.ts角度应用程序或使用脚本标签less.js在 HTML 正文中。

In the @Component, styleUrls可以删除,因为没有用处。

此外,所有与组件相关的样式都需要包装在特定于组件的 1 个类中(HTML 和 less)。这将确保您实现与 Angular CLI 相同的行为。

希望这可以帮助。请在此发表评论以了解更多具体问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有 CLI 的情况下在 Angular 组件中使用 less 的相关文章

随机推荐

  • 网络服务发现

    我正在考虑为 Android 客户端 和服务器 Windows 制作客户端 服务器应用程序 该应用程序的用途是从服务器 PC 开始 它允许用户扫描网络以查找与我的 C 应用程序兼容的设备 然后可以向客户端和服务器发送消息或从客户端和服务器发
  • Angular.js getElementById() 在 $scope 函数中不起作用

    el document getElementById id 在下面的函数内不起作用 el 为空 在浏览器调试中 我可以使用相同的代码提取该元素 我是 Angular js 的新手 我不能在附加到作用域的函数中使用常规 JavaScript
  • 如何决定Javascript和Jquery函数的执行顺序

    我正在调用两个函数 一个是 Java 脚本 一个是 Jquery 函数 单击Cancel button java脚本函数在Jquery函数之前执行 我想要完全相反 这是我的 HTML 代码
  • 如何检查 Mozilla 中是否安装了 firebug? [复制]

    这个问题在这里已经有答案了 可能的重复 检测Firebug的Javascript https stackoverflow com questions 398111 javascript that detects firebug 如何使用 J
  • 带有空括号 () 的 Lambda 表达式 [重复]

    这个问题在这里已经有答案了 我遇到过这样的代码 var vpAlias null var prices session QueryOver
  • 将 json 数据保存到 Django 模型

    我正在尝试将 json 数据保存到模型中 我正在获取所需的所有数据 如何将它们保存到模型中 views py def book api request if request method POST search request POST t
  • 如何判断 Detox 正在运行测试?

    我在用着Detox https github com wix detox在我的 React Native 项目中运行端到端测试 我还使用 faker js 来模拟我的 API 请求 并且我正在努力寻找一种方法来了解应用程序当前是否处于 测试
  • 当对象通过 google.script.run 传递时,对象属性值在服务器端丢失

    Preface 我发布此内容是为了警告其他人 google script run 中存在潜在错误 提出可能的解决方法 并征求社区对可能发生的情况的进一步见解 问题 我将一个大数据对象传递给通过 google script run 调用的服务
  • Spring Tool Suite 入门指南不起作用

    我正在尝试编写 STS 入门指南 此处 http spring io guides gs sts http spring io guides gs sts 使用Spring Tool Suite STS 版本 3 6 3 RELEASE 并
  • 是否保证 std::vector 默认构造不会调用 new ?

    根据参考资料 http en cppreference com w cpp container vector vector一个简单的std vector
  • 从本地主机调用 Instagram API

    是否可以得到Instagram通过 API 获取的用户详细信息本地主机 因为我试图从本地主机执行此操作 但无法获取信息 单击登录网址后 它会将我重定向到Instagram成功登录并授权应用程序后 它会使用代码在我的回调 URL 中正确重定向
  • 列出在单个 cvs 提交中签入的所有文件

    一般来说 我们对任何错误的修复 补丁都涉及多个文件的更改 我们将一次提交所有这些文件 在SVN中 对于每次提交 可能涉及多个文件 它都会将整个存储库的修订号加一 因此 我们可以轻松链接一次提交中的所有多个文件 现在 CVS 中相同情况的困难
  • 对象列表,如何组合具有两个键具有相同值的对象

    我正在创建一个用于创建 IAM 角色的模块 消费者将提供这样的东西 role cross account config account ids 1111112222222 333332222222 external id yesss req
  • 如何使用来自多个数据源的字段创建查找?

    我需要在表单字段中创建动态查找 该字段应显示来自两个不同数据源的字段 我尝试将其执行为 public void lookup query new Query sysTableLookup SysTableLookup newParamete
  • 列出具有特定存储类别的 S3 存储桶对象

    从 Glacier 获取对象非常耗时 因此我决定改用 S3 IA 存储类 我需要列出存储桶中具有 Glacier 存储类的所有对象 我通过 LifeCycle 策略配置它 并将其更改为 S3 IA 有没有任何脚本或工具可以实现这一点 你可以
  • Java 机器人按键命令键

    Mac 上命令键的 VK key 代码是什么 如果存在 我试图让机器人 java 机器人 按下命令键 我正在使用命令 keyPress 并且我需要知道 Mac 上命令键的整数键码 KeyEvent VK META http docs ora
  • 禁用按钮,直到必填字段有效

    我已经搜索了这个问题的答案 但仍然无法让它工作 我想确定
  • Rails 4,将“\n”替换为“ " 用于 Excel 中的 XML 电子表格

    我正在编写一个应用程序 将某些数据导出到特定格式的 Excel 文档中 我正在使用此文档构建 XML 电子表格文件 http msdn microsoft com en us library aa140066 v office 10 asp
  • 内存映射文件线程安全吗

    我想知道您是否可以使用多线程写入单个文件内存映射文件 http en wikipedia org wiki Memory mapped file 并确保两个线程不会写入同一区域 例如 通过交错固定大小的记录 从而减轻应用程序级别同步的需要
  • 如何在没有 CLI 的情况下在 Angular 组件中使用 less

    我有一个应用程序 我必须在其中配置和使用较少的内容来实现动态主题 问题是我们没有使用 angular cli 并且这里的配置有点奇怪 所以我们手动引导 Angular 模块 以下是应用程序的配置 包 json dependencies an