AngularアプリにBootstrapを導入したい
Bootstrapの導入にあたり調べてみたら ng-bootstrap というものがあるみたいなのでインストールしてみたのだが、その際に戸惑ったのでメモ
ng-bootstrapを導入する
ng-bootstrapはangularでbootstrapを使えるようにするライブラリ。
公式HP:https://ng-bootstrap.github.io/#/home
とりあえず公式に記載の通りにやってみる。
導入手順
- ng-bootstrapをインストールする
npm install @ng-bootstrap/ng-bootstrap
- app.module.tsにNgbModuleをインストールする
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
@NgModule({
...
imports: [NgbModule, ...],
...
})
export class YourAppModule {
}
これでng-bootstrapがインポートでき、angularでもBootstrapが使えるとのこと
早速試してみる
公式のサンプルを拝借してDropdownを動かしてみる。
<div class="row" style="padding: 40px 10px">
<div class="col">
<div ngbDropdown class="d-inline-block">
<button class="btn btn-outline-primary" id="dropdownBasic1" ngbDropdownToggle>Toggle dropdown</button>
<div ngbDropdownMenu aria-labelledby="dropdownBasic1">
<button ngbDropdownItem>Action - 1</button>
<button ngbDropdownItem>Another Action</button>
<button ngbDropdownItem>Something else is here</button>
</div>
</div>
</div>
<div class="col text-right">
<div ngbDropdown placement="top-right" class="d-inline-block">
<button class="btn btn-outline-primary" id="dropdownBasic2" ngbDropdownToggle>Toggle dropup</button>
<div ngbDropdownMenu aria-labelledby="dropdownBasic2">
<button ngbDropdownItem>Action - 1</button>
<button ngbDropdownItem>Another Action</button>
<button ngbDropdownItem>Something else is here</button>
</div>
</div>
</div>
</div>
何が間違っているのか
インストールしたng-bootstrapのreadme.md
を開いてみると原因が分かった。
どうやらAngularでbootstrapを使うにはng-bootstrapだけではだめで、bootstrapのcssファイルが必要らしい。
ここからはreadme.md
に記載の手順に従ってbootstrap.css
をAngularに適用した。
- bootstrapをインストールする
npm install --save bootstrap
-
angular.json
に以下を追記する
...
"styles":[
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"styles.scss"
]
...
- styles.cssに
bootstrap.min.css
をインポートする
@import 'bootstrap/dis/css/bootstrap.min.css'
設定が終わってから再起動すると画像のように表示されるようになった。
まとめ
AngularでBootstrapを使えるようにするには ng-bootstrap だけではなく bootstrap.css もインストールする必要があった。