如何在Angular项目中使用Bootstrap?


Answers:


119

只要您使用Angular-CLI生成新项目,还有另一种方法可以使Angular 2/4中的引导程序可访问。

  1. 通过命令行界面导航到项目文件夹。然后使用npm安装bootstrap :
    $ npm install --save bootstrap。该--save选项将使引导程序出现在依赖项中。
  2. 编辑.angular-cli.json文件,该文件将配置您的项目。它在项目目录中。添加对"styles"数组的引用。该引用必须是使用npm下载的引导程序文件的相对路径。就我而言:"../node_modules/bootstrap/dist/css/bootstrap.min.css",

我的示例.angular-cli.json:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "bootstrap-test"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "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/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],
      "scripts": [],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "src/tsconfig.app.json"
    },
    {
      "project": "src/tsconfig.spec.json"
    },
    {
      "project": "e2e/tsconfig.e2e.json"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

现在,引导程序应成为默认设置的一部分。


1
我认为bootstrap.min.js也应在此解决方案中添加到“脚本”中。你同意吗?
hamalaiv

1
@hamalaiv这至少不是强制性的。
LaPriWa

3
我使用步骤1安装了引导程序,然后插入@import“ ../node_modules/bootstrap/dist/css/bootstrap.min.css”; 在我的src / styles.css文件中,如以下post stackoverflow.com/a/40054193/3777549中所述。这篇文章中的步骤2对我而言不是必需的,我使用的是@ angular / cli:1.3.1
user3777549

77

也可以通过ng2-bootstrap项目获得与Angular2的集成:https : //github.com/valor-software/ng2-bootstrap

要安装它,只需将这些文件放在您的HTML主页面中:

<script src="https://cdnjs.cloudflare.com/ajax/libs/ng2-bootstrap/x.x.x/ng2-bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">

然后,您可以通过以下方式将其用于组件:

import {Component} from 'angular2/core';
import {Alert} from 'ng2-bootstrap/ng2-bootstrap';

@Component({
  selector: 'my-app',
  directives: [Alert],
  template: `<alert type="info">ng2-bootstrap hello world!</alert>`
})
export class AppComponent {
}

1
如果使用ng2-bootstrap版本,您是否不应该使用捆绑的CSS?我不确定为什么要使用CDN css还是应该这样做?我也是这个新手。
斯蒂芬·约克

6
新的angular2在@component内没有指令
Master Yoda

38

您需要做的就是在您的index.html文件中包含boostrap css。

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

1
有没有办法从本地资源而不是CDN包含它?
SparK's

1
是的,href应该只设置为本地文件的路径。如果您遇到问题,建议您从正在使用的任何Web服务器中搜索“服务静态文件”。
user2263572 '16

对于除index.html以外的其他文件,它在angular 6+上不起作用。例如。app.component.html。请告诉。
ganeshdeshmukh '18年


16

如果您打算使用此线程中提到的angular-ui团队的ng-bootstrap所需的Bootstrap 4,则可以改用它(注意:您不需要包括JS文件):

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">

您还可以在运行后npm install bootstrap@4.0.0-alpha.6 --save通过指向文件中的styles.scss文件来本地引用此文件,并假设您使用的是SASS:

@import '../../node_modules/bootstrap/dist/css/bootstrap.min.css';

1
您能否解释一下为什么不需要包括JS文件。是因为NPM安装了它吗?同样,在Thierry Templier的示例中,他导入ng2-bootstrap / ng2-bootstrap以使用警报。引导程序4的用法是否相同?
BBaysinger

谢谢。我确实尝试了您的第二个例子。我收到一个错误,指出无法从node_modules加载资源。
BBaysinger

1
查看最新答案。如果您使用的是SASS,则可以执行我所做的操作并将@import其保存到您的SASS文件中。如果没有,您可以尝试将其添加到vendor.ts文件中,但是我没有在代码中使用它。
occasl

10

最受欢迎的选择是使用一些以npm软件包形式分发的第三方库,例如ng2-bootstrap项目https://github.com/valor-software/ng2-bootstrap或Angular UI Bootstrap库。

我个人使用ng2-bootstrap。有许多方法可以配置它,因为配置取决于Angular项目的构建方式。我在下面发布了基于Angular 2 QuickStart项目https://github.com/angular/quickstart的示例配置

首先,我们在package.json中添加依赖项

    { ...
"dependencies": {
    "@angular/common": "~2.4.0",
    "@angular/compiler": "~2.4.0",
    "@angular/core": "~2.4.0",

    ...

    "bootstrap": "^3.3.7",
    "ng2-bootstrap": "1.1.16-11"
  },
... }

然后我们必须将名称映射到systemjs.config.js中的正确URL

(function (global) {
  System.config({
    ...
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: 'app',

      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

      //bootstrap
      'moment': 'npm:moment/bundles/moment.umd.js',
      'ng2-bootstrap': 'npm:ng2-bootstrap/bundles/ng2-bootstrap.umd.js',

      // other libraries
      'rxjs':                      'npm:rxjs',
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js'
    },
...
  });
})(this);

我们必须在index.html中导入bootstrap .css文件。我们可以从硬盘驱动器上的/ node_modules / bootstrap目录(因为我们添加了bootstrap 3.3.7依赖项)或从Web上获取它。在那里,我们可以从网络获取它:

<!DOCTYPE html>
<html>
  <head>
    ...
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    ...
  </head>

  <body>
    <my-app>Loading...</my-app>
  </body>
</html>

我们应该从/ app目录编辑app.module.ts文件

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

//bootstrap alert import part 1
import {AlertModule} from 'ng2-bootstrap';

import { AppComponent }  from './app.component';


@NgModule({
  //bootstrap alert import part 2
  imports:      [ BrowserModule, AlertModule.forRoot() ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

最后是/ app目录中的app.component.ts文件

import { Component } from '@angular/core';

@Component({
    selector: 'my-app',
    template: `
    <alert type="success">
        Well done!
    </alert>
    `
})

export class AppComponent {

    constructor() { }

}

然后,在运行应用程序之前,我们必须安装bootstrap和ng2-bootstrap依赖项。我们应该去我们的项目目录并输入

npm install

最后,我们可以启动我们的应用程序

npm start

ng2-bootstrap项目github上有许多代码示例,展示了如何将ng2-bootstrap导入到各种Angular 2项目构建中。甚至还有plnkr示例。Valor软件(库的作者)网站上也有API文档。


9

在angular-cli环境中,我发现的最直接的方法如下:


1.在具有样式表的环境中的解决方案

npm install bootstrap-sass save

在style.scss中:

$icon-font-path: '~bootstrap-sass/assets/fonts/bootstrap/';
@import '~bootstrap-sass/assets/stylesheets/bootstrap';

注1:该~字符是对nodes_modules文件夹的引用。
注意2:在使用scss时,我们可以自定义所需的所有boostrap变量。


2.在具有样式表的环境中的解决方案

npm install bootstrap save

在style.css中:

@import '~bootstrap/dist/css/bootstrap.css';

6

有几种方法可以使用Bootstrap配置angular2,要获得最大的收益,最完整的方法之一就是使用ng-bootstrap,使用此配置,我们可以使algular2对DOM进行完全控制,而无需使用JQuery和Boostrap .js。

1-以使用Angular-CLI创建并使用命令行的新项目为起点,安装ng-bootstrap:

npm install @ng-bootstrap/ng-bootstrap --save

注意:有关更多信息,访问https://ng-bootstrap.github.io/#/getting-started

2-然后我们需要为CSS和网格系统安装引导程序。

npm install bootstrap@4.0.0-beta.2 --save

注意:有关更多信息,访问https://getbootstrap.com/docs/4.0/getting-started/download/

现在我们有了环境设置,为此我们必须更改.angular-cli.json并添加到样式中:

"../node_modules/bootstrap/dist/css/bootstrap.min.css"

这是一个例子:

"apps": [
    {
      "root": "src",
        ...
      ],
      "index": "index.html",
       ...
      "prefix": "app",
      "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],
      "scripts": [],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ]

下一步是将ng-boostrap模块添加到我们的项目中,为此,我们需要添加app.module.ts:

import { NgbModule } from '@ng-bootstrap/ng-bootstrap';

然后将新模块添加到应用程序应用程序:NgbModule.forRoot()

例:

@NgModule({
  declarations: [
    AppComponent,
    AppNavbarComponent
  ],
  imports: [
    BrowserModule,
    NgbModule.forRoot()
  ],
  providers: [],
  bootstrap: [AppComponent]
})

现在,我们可以在angular2 / 5项目上开始使用bootstrap4了。


3

我有同样的问题,并发现本文提供了一个非常干净的解决方案:

http://leon.radley.se/2017/01/angular-cli-and-bootstrap-4/

以下是说明,但提供了我的简化解决方案:

安装Bootstrap 4(说明):

npm install --save bootstrap@4.0.0-alpha.6

如果需要,将src / styles.css重命名为styles.scss并更新.angular-cli.json以反映更改:

"styles": [
  "styles.scss"
],

然后将此行添加到styles.scss中

@import '~bootstrap/scss/bootstrap';

3

只需检查您的package.json文件并添加引导程序依赖项

"dependencies": {

   "bootstrap": "^3.3.7",
}

然后在.angular-cli.json文件中添加以下代码

 "styles": [
    "styles.css",
    "../node_modules/bootstrap/dist/css/bootstrap.css"
  ],

最后,您只需使用终端在本地更新npm

$ npm update

2
  1. npm install-保存引导程序
  2. 转到-> angular-cli.json文件,找到样式属性,然后添加下一个字符串:“ ../ node_modules / bootstrap / dist / css / bootstrap.min.css”,可能看起来像这样:

    "styles": [
    "../node_modules/bootstrap/dist/css/bootstrap.min.css",
    "styles.css"
    ],

2

Angular 6+和Bootstrap 4+的操作步骤:

  1. 打开项目文件夹中的外壳
  2. 使用以下命令安装引导程序: npm install --save bootstrap@4.1.3
  3. Bootstrap需要依赖项jquery,因此如果没有依赖项,则可以使用以下命令进行安装: npm install --save jquery 1.9.1
  4. 您可能需要使用以下命令修复漏洞: npm audit fix
  5. 在您的主要style.scss文件中,添加以下行: @import "../node_modules/bootstrap/dist/css/bootstrap.min.css";

要么

将此行添加到您的主要index.html文件中: <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">



1

我的建议是不要在json笔中声明它,然后将其放在scss中,以便将所有内容编译到一个位置。

1)使用npm安装bootstrap

 npm install bootstrap

2)用我们的样式在CSS中声明bootstrap npm

创建_bootstrap-custom.scss

  // Required
  @import "bootstrap-custom-required";


  // Optional
  @import "~bootstrap/scss/root";
  @import "~bootstrap/scss/grid";
  @import "~bootstrap/scss/tables";

    ...
    ..
    .

3)在styles.scss中插入

@import "bootstrap-custom";

因此,我们将所有核心内容汇总到一个地方



0

在您的html页面中添加以下行

<script src="https://cdnjs.cloudflare.com/ajax/libs/ng2-bootstrap/x.x.x/ng2-bootstrap.min.js"></script>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.