将MDBootstrap添加到Angular项目

时间:2018-02-13 14:58:08

标签: angular mdbootstrap

我成功地将Bootstap添加到一个Angular项目中,并希望对MDBoostrap做同样的事情(我不知道Bootstrap是否仍然有用吗?)

我使用npm安装遵循官方程序just here

但是当我尝试导入样式时,我有以下错误

enter image description here

这是我的app.module.ts文件:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
import { MDBBootstrapModule } from 'angular-bootstrap-md';
/*Ajout Test du dossier ngx bootstrap*/
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { TooltipModule } from 'ngx-bootstrap/tooltip';
import { ModalModule } from 'ngx-bootstrap/modal';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    /*Ajout*/
    MDBBootstrapModule.forRoot(),
    BsDropdownModule.forRoot(),
    TooltipModule.forRoot(),
    ModalModule.forRoot()
  ],
  schemas: [ NO_ERRORS_SCHEMA ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我的angular-cli.json文件:

"index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [

        "../node_modules/font-awesome/scss/font-awesome.scss",
        "../node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss",
        "../node_modules/angular-bootstrap-md/scss/mdb-free.scss",
        "./styles.scss"
      ],
      "scripts": [
        "../node_modules/chart.js/dist/Chart.js",
        "../node_modules/hammerjs/hammer.min.js"
      ],

import文件中的style.scss

@import "../node_modules/bootstrap/dist/css/bootstrap.min.css"; //OK
@import "../node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss"; //OK
@import "../node_modules/font-awesome/scss/font-awesome.scss"; // ERROR : ../fonts/fontawesome-webfont.eot
@import "../node_modules/angular-bootstrap-md/scss/mdb-free.scss"; // ERROR : ../font.roboto.Robto-Bold.eot

就像我评论的那样,前2个导入都没问题,但其他2个导入错误。

查看错误我感觉到系统正在查看确实不存在的myProject/font重复,但我真的不明白为什么。

更新:

我发现roboto.scss文件使用了相对网址

@font-face {
font-family: "Roboto";
src: local(Roboto Thin), url('#{$roboto-font-path}Roboto-Thin.eot');
src: url("#{$roboto-font-path}Roboto-Thin.eot?#iefix") format('embedded-opentype'),
    url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"),
    url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"),
    url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype");

font-weight: 200;

}

其中$roboto-font-path = ../fonts/roboto/。这显然是问题所在。

可以使用resolve-url-loader并将配置更改为

来解决
{
test: /\.scss$/,
loaders: ['style', 'css', 'resolve-url', 'sass?sourceMap']
}

但使用angular-cli则不是我的情况。

更新2:

实际上它有效!

@import....文件中的styles.scss无用。

我犯的一个大错误就是尝试使用Mdb pro组件并在其上测试我的配置......我很抱歉。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

漩涡,

第一件事:你使用哪种操作系统? Windows,Linux还是Mac?

第二件事:您是否使用--style=scss参数创建了项目?

请按照以下步骤使其正常工作:
ng new name --style=scss

然后安装包:

npm install angular-md-bootstrap --save

然后将导入添加到app.module.ts

import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
import { MDBBootstrapModule } from 'angular-bootstrap-md';

然后将样式和脚本位置添加到tsconfig.app.json文件:

"styles": [
"../node_modules/font-awesome/scss/font-awesome.scss",
"../node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss",
"../node_modules/angular-bootstrap-md/scss/mdb-free.scss",
"./styles.scss"
],
"scripts": [
"../node_modules/chart.js/dist/Chart.js",
"../node_modules/hammerjs/hammer.min.js"
],

然后使用以下命令安装其他库:

npm install -–save chart.js@2.5.0 font-awesome hammerjs

然后到根目录中的tsconfig.json文件添加:

"include": ["node_modules/angular-bootstrap-md/**/*.ts",  "src/**/*.ts"],

tsconfig.app.json目录中的/src文件我添加了:

"include": [ "**/*.ts", "../node_modules/angular-bootstrap-md/index.ts" ]

现在一切都应该正常。

如果您尚未使用--style=scss属性创建项目,则必须执行以下操作:

ng set defaults.styleExt scss

并将每个扩展名从.css更改为.scss。对于我的项目,我更改了文件:

src/styles.css -> src/styles.scss,

src/app/app.component.css -> src/app/app.component.scss

并在src/app/app.components.ts

stylesUrls ['./app.component.css'] -> stylesUrls: ['./app.component.scss']

即使您没有使用--styles=scss创建项目,现在一切都应该正常工作。

对于您app.module.ts这些行的现有projectdDelete:

import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { TooltipModule } from 'ngx-bootstrap/tooltip';
import { ModalModule } from 'ngx-bootstrap/modal';

最诚挚的问候,
来自MDBootstrap的Damian