使用 npm 让 ng-bootstrap 为 angular cli 项目工作

Posted

技术标签:

【中文标题】使用 npm 让 ng-bootstrap 为 angular cli 项目工作【英文标题】:Get ng-bootstrap to work for angular cli project with npm 【发布时间】:2017-06-11 13:53:39 【问题描述】:

我正在尝试使用 ng-bootstrap 工作的角度 CLI 设置项目。但是,我根本无法让这种风格发挥作用。这是我采取的确切步骤(这是入门页面中的步骤)

    使用 -ng new testApp 创建一个新项目 根据 ng-bootstrap 的入门页面,我需要预先安装 bootstrap 4。所以我运行 npm install bootstrap@4.0.0-alpha.6 然后我运行 npm install --save @ng-bootstrap/ng-bootstrap

    按照入门指南对我的 app.module.ts 文件执行以下操作

    从'@ng-bootstrap/ng-bootstrap'导入NgbModule;

    @NgModule( 声明:[AppComponent, ...], 进口:[NgbModule.forRoot(), ...], 引导程序:[AppComponent] ) 导出类 AppModule

    此时我的设置应该已准备就绪。所以我抓取了Date Picker html 和 TS 代码并将其放入我的 app.component.ts 和 app.compoennt.html 文件中

app.component.ts

import  Component  from '@angular/core';
import NgbDateStruct from '@ng-bootstrap/ng-bootstrap';

const now = new Date();

@Component(
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
)
export class AppComponent 
  model: NgbDateStruct;
  date:  year: number, month: number ;

  selectToday() 
    this.model =  year: now.getFullYear(), month: now.getMonth() + 1, day: now.getDate() ;
  

app.component.html

<p>Simple datepicker</p>

<ngb-datepicker #dp [(ngModel)]="model" (navigate)="date = $event.next"></ngb-datepicker>

<hr/>

<button class="btn btn-sm btn-outline-primary" (click)="selectToday()">Select Today</button>
<button class="btn btn-sm btn-outline-primary" (click)="dp.navigateTo()">To current month</button>
<button class="btn btn-sm btn-outline-primary" (click)="dp.navigateTo(year: 2013, month: 2)">To Feb 2013</button>

<hr/>

<pre>Month:  date.month . date.year </pre>
<pre>Model:  model | json </pre>
    运行 ng serve,结果如下

【问题讨论】:

您是否在任何地方引用了引导 CSS?如果使用 angular-cli,您可以将其添加到 angular-cli.json 文件中的“脚本”数组中。在您为 angular 2 bootstrap 提供的链接中,它提到 Bootstrap CSS 作为依赖项。 我添加到 angular-cli 并且它有效,谢谢。很惊讶入门指南中没有提到它.... 呸……我说的是“脚本”……我的意思是“样式”。无论哪种方式,我都同意。它肯定会避免一些混乱! 【参考方案1】:

您需要在 bootstrap.min.css 样式中添加 angular-cli.json

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

你需要在 app.module.ts 中导入 Ng2BootstrapModule

@NgModule(
 declarations: [AppComponent],
 imports: [BrowserModule, FormsModule, HttpModule, RouterModule.forRoot(routes), Ng2BootstrapModule],
 providers: [],
 bootstrap: [AppComponent]
)

export class AppModule  

【讨论】:

我认为您将 ng2-bootstrap(由 Valor 软件制作:valor-software.com/ng2-bootstrap/#)与官方 ng-bootstrap:v4-alpha.getbootstrap.com/getting-started/download/… 混淆了。话虽如此,我认为 OP 可能不包括 CSS 参考。 只需添加 angular-cli.json 对我有用。 @silencedmessage,现在我很困惑....我应该使用官方的 ng-bootstrap 还是 valor ng2-bootstrap?对我来说,它们看起来像同一个框架 我一直想知道...为什么入门页面不指示人们添加到 angular-cli.json 文件中... 两者都是 Bootstrap 的 Angular 2 端口(它是相同的底层 JS/CSS)。一个只是由制作 Bootstrap 的人,另一个是不想等待 Bootstrap 正式准备好的开发人员。我在一个项目中使用 ng2-bootstrap 是因为我们开始时官方还没有准备好。老实说,我不确定两者之间有多大区别。

以上是关于使用 npm 让 ng-bootstrap 为 angular cli 项目工作的主要内容,如果未能解决你的问题,请参考以下文章

使用 css 样式化 ng-bootstrap 手风琴

ng-bootstrap 日期选择器格式

Storybook Angular 和 ng-bootstrap

依赖@ng-bootstrap/ng-bootstrap 必须明确列入白名单

折叠在导航栏面包屑按钮的 ng-bootstrap 和 Angular 4 应用程序中不起作用

Angular之ng-bootstrap使用