我想在Angular CLI创建的Angular4项目中使用引导4和SASS。
我尤其需要:
从版本6应该是
"styles": [
"node_modules/bootstrap/scss/bootstrap.scss",
"src/styles.scss",
"src/assets/scss/main.scss"
]
如果你有一个自定义主题为我工作
仅在styles.scss中添加库
@import "./assets/scss/mytheme";
@import "~bootstrap/scss/bootstrap";
除了@ShinDarth的答案之外,您可能还想采用更简单的解决方案,仅导入您需要的Bootstrap模块,而不是全部导入。
因此,您将替换:
"styles": [
"../node_modules/bootstrap/scss/bootstrap.scss",
"assets/scss/main.scss"
],
跟:
"styles": [
"assets/scss/main.scss"
],
那么您的< code>main.scss将看起来像这样:
// import only the Bootstrap modules you need, e.g.
@import "~bootstrap/scss/functions";
@import "~bootstrap/scss/variables";
@import "~bootstrap/scss/mixins";
@import "~bootstrap/scss/grid";
@import "~bootstrap/scss/navbar";
@import "~bootstrap/scss/forms";
// import your own custom files, e.g.
@import "variables";
@import "global";
为了使用 SASS 设置角度引导 4,我们只需要配置角度 CLI 并安装引导 4 npm 软件包。无需安装任何 SASS 编译器,因为它已包含在内。
编辑:此答案已更新,可用于较新版本的Angular CLI(已通过6.1.3版测试)。我在这个答案的底部留下了旧的Angular CLI的说明,但是我强烈建议您更新您的Angular CLI版本。
编辑您的angular.json
文件,并将"styleext":"scss"
键值添加到projects.PROJECT_NAME.schematics.@schematics /angular:组件
对象。
它应该是这样的:
{
// ...
"projects": {
"PROJECT_NAME": {
// ....
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
// ...
}
只需使用:
ng 新的我的项目 --样式=scss
为此,您只需将样式文件从. css
重命名为. scss
并相应地更改@Component({...})
配置:
styleUrls: ['./ my-component.scss']
这样,当您执行< code>ng serve等命令时,只要这些文件发生变化,angular-cli就会自动监视并重新编译它们。
通过npm安装Bootstrap 4:
< code>npm安装引导程序-保存
现在,将引导程序添加到样式
数组中的角度 cli.json
配置中(在任何其他自定义 css/scss 文件之前,以便让它们覆盖引导规则:
"styles": [
"node_modules/bootstrap/scss/bootstrap.scss",
/* ... */
],
这样,Bootstrap 4源代码将保持干净,并且每当新版本发布时,升级它都非常容易。
可以在app/assets/scss
下添加任何其他应全局影响项目的SASS样式(与单个组件样式不同),然后在angular cli.json
的
样式
数组中引用。
我的建议是引用一个
main.scss
文件,该文件将包含所有自定义 SASS 样式:例如,自定义变量的 _variables.scss
、全局规则的 _global.scss
文件等。
因此,在
角度-cli.json
中,您将仅引用一个自定义主 .scss
文件:
"styles": [
"node_modules/bootstrap/scss/bootstrap.scss",
"src/assets/scss/main.scss"
],
其中内部包括所有自定义全局* SASS 代码:
// main.scss
@import "variables";
@import "global";
// import more custom files...
*请注意,这里不能包含<code>*。单个组件的scss
样式文件。
有一些项目允许您在没有jQuery的情况下使用Bootstrap。
举两个例子:
>
ngx-bootstrap
ng引导
这里讨论了这两个项目之间的区别:“ng引导”和“ngx引导”之间的区别是什么?
警告:我将不再维护这部分答案,所以为了继续阅读它,我建议更新您的Angular CLI版本并遵循上面的说明。
运行:
<code>ng设置默认值。styleExt-scss
这将影响您的< code >。angular-cli.json配置文件(示例)。
注意:如果您从头开始,您可以使用Angular CLI创建一个新项目,方法是:<code>ng new my project--style=scss
为此,您只需将样式文件从. css
重命名为. scss
并相应地更改@Component({...})
配置:
styleUrls: ['./ my-component.scss']
(举例)。
这样,当您执行< code>ng serve等命令时,只要这些文件发生变化,angular-cli就会自动监视并重新编译它们。
通过npm安装Bootstrap 4:
< code>npm安装引导程序-保存
现在将Bootstrap添加到.angular-cli.json
配置在样式
数组中(在任何其他自定义css/scss文件之前,以便让它们覆盖引导规则:
"styles": [
"../node_modules/bootstrap/scss/bootstrap.scss",
/* ... */
],
(举例)。
这样,Bootstrap 4源代码将保持干净,并且每当新版本发布时,升级它都非常容易。
任何额外的SASS样式(与单个组件样式不同)都可以添加到app/资产/scss
下,然后在的
。样式
数组中引用。angular-cli.json
我的建议是引用一个 main.scss
文件,该文件将包含所有自定义 SASS 样式:例如,自定义变量的 _variables.scss
、全局规则的 _global.scss
文件等。(示例)。
所以在你的<代码>中。angular-cli.json您将只引用一个自定义的< code>main.scss文件:
"styles": [
"../node_modules/bootstrap/scss/bootstrap.scss",
"assets/scss/main.scss"
],
其中内部包括所有自定义全局* SASS 代码:
// main.scss
@import "variables";
@import "global";
// import more custom files...
*请注意,这里不能包含<code>*。单个组件的scss样式文件。
有一些项目允许您在没有jQuery的情况下使用Bootstrap。
举两个例子:
>
ngx-bootstrap
ng引导
这里讨论了这两个项目之间的区别:“ng引导”和“ngx引导”之间的区别是什么?
提前感谢!
我刚刚使用新的Angular CLI 6.0创建了一个新的Angular项目,但我需要将Sass编译添加到我的项目中。我知道您可以在创建项目时设置标志,但我的项目已经创建并且工作已经完成。 使用新的Angular CLI生成的新配置文件现在称为< code>angular.json,而不是< code>angular-cli.json。该文件的方案也不同,具有新的属性。 在旧的有一个部分可以设置<
问题内容: 我尝试将Angular与Bluebird Promise一起使用: HTML: JS: [ 小提琴 ] 但是,无论我尝试了什么,它都保持不变并且没有更新。除非我添加了手册,否则我会避免使用。 如何让Bluebird与AngularJS一起使用? (我知道这是可能的,因为$ q可以这样做) 我正在使用Bluebird2.0,我在这里。 问题答案: 这是可能的,甚至很容易! 好吧,如果我们
问题内容: 通过将Angular 1.4与ES6 / 7和Babel结合使用,我可以在类块之后使用以下代码将参数成功地注入到名为Controller的类中: 但是,在构造函数上方看到inject参数会更干净。我见过其他人使用静态$ inject,但出现错误。这是我正在尝试的: 为什么会导致此错误?它似乎为其他人工作。 问题答案: 那是实验性提议的语法。在Babel中,您必须启用。通过 通天塔。确切
问题内容: 基础 角1.1.5- http ://plnkr.co/edit/eoKt8o4MJw9sWdYdeG3s? p= preview-作品 上调 角度1.2.6- http ://plnkr.co/edit/WopgAtFNVm1mKf5Li99h? p= preview-失败 我认为我确实遵循了文档中的说明-http: //docs.angularjs.org/api/ngAnimat
问题内容: 我已经能够让控制器将$ on侦听器与一起使用。 但我看不到任何有关如何获取服务以监听事件的文档。 我试过了,但是只允许一个听众。我希望多个服务中的侦听器,无论其父控制器是否在作用域内。 问题答案: 经过一番试验后,事实证明,使用最少的代码即可将事件发送到服务。 如果有其他人遇到此问题,请遵循示例服务代码。 该样本在获得相应广播后将服务模型保存并还原到本地存储中