如何在使用angular cli创建的项目中集成angular2-materialize

时间:2016-09-24 11:11:11

标签: angularjs angular materialize

我想在我的项目中使用Materialize CSS框架。 我使用Angular CLI

设置了ng new BLABLA项目

之后,我已按照this指南中的步骤进行操作。

但是,如果我使用ng serve启动项目,我会在浏览器中收到此错误:

TypeError: undefined is not an object (evaluating 'jQuery.easing.swing') 

my angular-cli.json

{
  "project": {
    "version": "1.0.0-beta.15",
    "name": "blabla"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": "assets",
      "index": "index.html",
      "main": "main.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.json",
      "prefix": "app",
      "mobile": false,
      "styles": [
        "styles.css"
      ],
      "scripts": [
        "../node_modules/jquery/dist/jquery.js",
        "../node_modules/materialize-css/dist/js/materialize.js"
      ],
      "environments": {
        "source": "environments/environment.ts",
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "addons": [],
  "packages": [],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "prefixInterfaces": false
  }
}

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { MaterializeModule } from 'angular2-materialize';
import "materialize-css";
import { AppComponent } from './app.component';

@NgModule({
  declarations: [ AppComponent ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MaterializeModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

3 个答案:

答案 0 :(得分:7)

您需要做的事情如下:

将此行添加到您的全局css文件中: @import" ../ node_modules / materialize-css / dist / css / materialize.css&#34 ;;

并删除此行 导入" materialize-css&#34 ;; 来自app.module.ts

如果你在任何情况下运行它,还要确保你更好地安装了正确的jquery版本: npm install jquery@^2.2.4 --save

这样做对我有用。 [祝你好运]

答案 1 :(得分:0)

我还发现,如果你在apps [0] .scripts和apps [0]的条目中运行npm rebuild,那么angular-cli.json everthing的属性就可以了,你不必将@import添加到styles.css中。

我在Mike Lynch的网站http://mikelynchgames.com/software-development/setting-up-and-using-angular-2-cli/

上找到了这些信息

答案 2 :(得分:0)

或者,如果您想使用原始sass而不是DIST版本的materialzie css,因为您可能需要覆盖颜色和其他变量,您可以使用此...

在这样的主要styles.sass文件中导入实现css。

// override fonts path to prevent build errors (or use resolve-url loader)
$roboto-font-path: "../node_modules/materialize-css/fonts/roboto/"

// optionally override color variables eg: ...
$primary-color: color("materialize-purple");

@import "~materialize-css/sass/materialize"