Angular Material快速搭建Admin Dashboard開發起手式到側邊導覽Routing添加

 



首先電腦環境確認nodejs跟npm 

以及angular cli都裝好了
沒有就下如下指令補安裝
npm install -g @angular/cli 

接著創建angular新專案這裡命名angularadmin
建立好就移動至下一層專案所在目錄

ng new angularadmin

cd angularadmin





接著ng add  material函式庫進來
直接用material所附帶的component  (navigation,dashboard) 進行建立
ng add @angular/material

ng generate @angular/material:navigation navigation

ng generate @angular/material:dashboard dashboard 

預設當你在引入 material時候會問你要採用捨麼風格


風格列表機本上如下








當我們已經把該裝的跟建立的準備好後
可以先ng serve啟動來看下目前效果
先到angularadmin/src/app/app.component.html
把預設提供的畫面範本用如下內容複製粘貼給覆蓋掉
<app-navigation></app-navigation>



Material預設自動幫我們準備好的NavigationComponent

navigation.component.ts

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import { Component } from '@angular/core';
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
import { Observable } from 'rxjs';
import { map, shareReplay } from 'rxjs/operators';

@Component({
  selector: 'app-navigation',
  templateUrl: './navigation.component.html',
  styleUrls: ['./navigation.component.css']
})
export class NavigationComponent {

  isHandset$: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset)
    .pipe(
      map(result => result.matches),
      shareReplay()
    );

  constructor(private breakpointObserver: BreakpointObserver) {}

}


和對應的HTML navigation.component.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<mat-sidenav-container class="sidenav-container">
  <mat-sidenav #drawer class="sidenav" fixedInViewport
      [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
      [mode]="(isHandset$ | async) ? 'over' : 'side'"
      [opened]="(isHandset$ | async) === false">
    <mat-toolbar>Menu</mat-toolbar>
    <mat-nav-list>
      <a mat-list-item href="#">Link 1</a>
      <a mat-list-item href="#">Link 2</a>
      <a mat-list-item href="#">Link 3</a>
    </mat-nav-list>
  </mat-sidenav>
  <mat-sidenav-content>
    <mat-toolbar color="primary">
      <button
        type="button"
        aria-label="Toggle sidenav"
        mat-icon-button
        (click)="drawer.toggle()"
        *ngIf="isHandset$ | async">
        <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
      </button>
      <span>angularadmin</span>      
    </mat-toolbar>
    <!-- Add Content Here -->
    
  </mat-sidenav-content>
</mat-sidenav-container>





當啟動後效果只會有Side-Navigation


此時需要再到
navigation.component.html
<!-- Add Content Here -->
這個註解下面多寫
<app-dashboard></app-dashboard>




之後就能看到包覆的content區塊出現預設Dashboard Component內容排版範本



不過這樣子加的方式其實只是先測試效果運行
還不算正統的Routing跳轉

側邊導覽
我們希望能加入Routing機制
由於我們在最初創建專案選擇不要產生angular routing
因此要自己手動建立app.routing.ts的檔案


import {Routes,RouterModule} from '@angular/router';
import { DashboardComponent } from './dashboard/dashboard.component';

const appRoutes:Routes=[
  {path:'dashboard',component:DashboardComponent},
];

export const routing = RouterModule.forRoot(appRoutes);

再到app.module.ts
去引入


...
import {routing} from './app.routing';


@NgModule({
  declarations: [
.....



imports: [
    ...,
    routing
  ],

最後到
navigation.component.html










Ref:
Create an Angular App with a Side-Navigation and a Dashboard in 5 minutes with Schematics

ANGULAR 12 ADMIN DASHBOARD TEMPLATE USING ANGULAR MATERIAL

Angular Material Theme Colors

Create A Responsive Dashboard With Angular Material And ng2-Charts







留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題