Angular8でAdminLTEを使う方法

f:id:takuyafujita:20190929165413j:plain

はじめに

業務でUIテンプレートのAdminLTEを使うことになったので、事前に触ってみることにしました。Angular8でプロジェクトを作成し、AdminLTEを使ってみることにします。

環境

node -v
v11.13.0
npm -v
6.7.0
ng v
Angular CLI: 8.3.6

Angularのプロジェクト作成

adminLteの名前でプロジェクトを作成します。途中、ルーティングの設定と使用するスタイルシートを聞かれますので、以下の様に選択しました。これですぐに実行できる簡単なAngularのアプリケーションが作成されます。

ng new adminLte
? Would you like to add Angular routing? Yes
? Which stylesheet format would you like to use? CSS

AdminLTEのソースコードを取得

ここからAdminLTEのソースコードを取得します。
今回はLatest releaseの2.4.18を使用します。(2019/09/29時点)

赤枠のリンクからソースコードをダウンロード

f:id:takuyafujita:20190929174356p:plain

必要なフォルダをAngularプロジェクトにコピー

ダウンロードしたファイルを解凍し、必要なフォルダをAngularプロジェクトにコピーします。

AdminLTE-2.4.18フォルダに格納されている以下の3フォルダをコピー

・bower_components
・dist
・plugins

f:id:takuyafujita:20190929182935p:plain

Angularプロジェクトの「src\assets」配下に貼り付け

f:id:takuyafujita:20190929183206p:plain

AdminLTEで使用するCSS、JSをAngularプロジェクトで使用できるようにする

AdminLTE-2.4.18フォルダに格納されている「index2.html」を参考にして、Angularプロジェクトの「index.html」を編集します。

編集内容は
スタイルシートの読み込みを追加

<link rel="stylesheet" href="assets/XXXXX.css">

JavaScriptファイルの読み込みを追加

<script src="assets/XXXXX.js"></script>

の2点です。

また、スタイルシートJavaScriptファイルともに必要なファイルは全てassets配下にコピーしていますので、パスの先頭に「assets/」を追記しておきます。

最終的にAngularプロジェクトの「index.html」が以下の様になっていればOKです。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>adminLte</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <!-- Bootstrap 3.3.7 -->
  <link rel="stylesheet" href="assets/bower_components/bootstrap/dist/css/bootstrap.min.css">
  <!-- Font Awesome -->
  <link rel="stylesheet" href="assets/bower_components/font-awesome/css/font-awesome.min.css">
  <!-- Ionicons -->
  <link rel="stylesheet" href="assets/bower_components/Ionicons/css/ionicons.min.css">
  <!-- jvectormap -->
  <link rel="stylesheet" href="assets/bower_components/jvectormap/jquery-jvectormap.css">
  <!-- Theme style -->
  <link rel="stylesheet" href="assets/dist/css/AdminLTE.min.css">
  <!-- AdminLTE Skins. Choose a skin from the css/skins
       folder instead of downloading all of them to reduce the load. -->
  <link rel="stylesheet" href="assets/dist/css/skins/_all-skins.min.css">
  <!-- Google Font -->
  <link rel="stylesheet"
        href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
</head>
<body>
  <app-root></app-root>
  <!-- jQuery 3 -->
  <script src="assets/bower_components/jquery/dist/jquery.min.js"></script>
  <!-- Bootstrap 3.3.7 -->
  <script src="assets/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  <!-- FastClick -->
  <script src="assets/bower_components/fastclick/lib/fastclick.js"></script>
  <!-- AdminLTE App -->
  <script src="assets/dist/js/adminlte.min.js"></script>
  <!-- Sparkline -->
  <script src="assets/bower_components/jquery-sparkline/dist/jquery.sparkline.min.js"></script>
  <!-- jvectormap  -->
  <script src="assets/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
  <script src="assets/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
  <!-- SlimScroll -->
  <script src="assets/bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script>
  <!-- ChartJS -->
  <script src="assets/bower_components/chart.js/Chart.js"></script>
  <!-- AdminLTE dashboard demo (This is only for demo purposes) -->
  <script src="assets/dist/js/pages/dashboard2.js"></script>
  <!-- AdminLTE for demo purposes -->
  <script src="assets/dist/js/demo.js"></script>
</body>
</html>

これでAngularプロジェクトでAdminLTEを使用する準備が整いました。

AdminLTEのテンプレートを使ってみる

AdminLTEのダッシュボードから使ってみたいテンプレートのソースをコピーします。

試しに赤枠のテンプレートを使ってみます。

f:id:takuyafujita:20190929202031p:plain

ソースはChromeの開発者ツールのSourcesタブからコピーして、そのままAngularプロジェクトの「app.component.html」に貼り付けました。

<!-- Main content -->
<section class="content">
  <div class="row">
    <!-- right column -->
    <div class="col-md-6">
      <!-- Horizontal Form -->
      <div class="box box-info">
        <div class="box-header with-border">
          <h3 class="box-title">Horizontal Form</h3>
        </div>
        <!-- /.box-header -->
        <!-- form start -->
        <form class="form-horizontal">
          <div class="box-body">
            <div class="form-group">
              <label for="inputEmail3" class="col-sm-2 control-label">Email</label>

              <div class="col-sm-10">
                <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
              </div>
            </div>
            <div class="form-group">
              <label for="inputPassword3" class="col-sm-2 control-label">Password</label>

              <div class="col-sm-10">
                <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
              </div>
            </div>
            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">
                  <label>
                    <input type="checkbox"> Remember me
                  </label>
                </div>
              </div>
            </div>
          </div>
          <!-- /.box-body -->
          <div class="box-footer">
            <button type="submit" class="btn btn-default">Cancel</button>
            <button type="submit" class="btn btn-info pull-right">Sign in</button>
          </div>
          <!-- /.box-footer -->
        </form>
      </div>
      <!-- /.box -->
    </div>
    <!--/.col (right) -->
  </div>
  <!-- /.row -->
</section>
<!-- /.content -->

Angularプロジェクトの表示確認

Angularプロジェクトを起動して表示を確認してみます。

ng serve

AdminLTEのテンプレートと同じようにAngularプロジェクトでも表示することができました。

f:id:takuyafujita:20190929202748p:plain

まとめ

AdminLTEは業務系の管理画面で使えるテンプレートが多数あります。ダッシュボードから使いたいテンプレートを選んでソースをコピーして使えるので業務でも使っていけそうです。