国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用angular4和nodejs-express構建一個簡單的網站(四)—angular路由初步

Zhuxy / 562人閱讀

摘要:為了做到這一點,我創建了一個服務提供商,通過的消息推送來實現。最后聲明一個來發送修改過的對象。根組件,創建它并插入宿主頁面。路由的作用是在找不到任何路由時,訪問組件。定義路由數組后,用裝飾器導入,并將路由數組傳遞給的數組。

上一篇文章對用戶發來的注冊和登錄信息進行了處理,并實現了將注冊用戶信息插入到mysql數據庫的數據表和從mysql數據庫的數據表中查詢到用戶的登錄信息并返回用戶認證信息,從這篇起,開始構建前端的登錄和注冊頁面,并實現angular路由。
為了讓大家能夠方便理解,我簡單的畫了一張我這個程序的路由分析圖:

創建初始頁面并設置總路由

初始頁面app.component.html的代碼如下:

{{title}}

{{lead}}


{{content}}

它是由一個bootstrap的jumbotron組件和一個router-outlet組成,在jumbotron中的標題、lead和內容應該隨著導航到不同的頁面而改變,所以我將這3個標簽的內容分別用插值表達式title、lead、content代替。為了做到這一點,我創建了一個JumbotronServive服務提供商,通過rxjs的消息推送來實現。JumbotronServive的代碼如下:

import { Injectable } from "@angular/core";
import { Subject } from "rxjs/Subject";
export class Jumbotron{
    constructor(
        public title:string,
        public lead:string,
        public content:string
    ){}
}
@Injectable()
export class JumbotronServive{
    private jumbSource = new Subject();
    jumb$ = this.jumbSource.asObservable();
    setJumbotron(jumb: Jumbotron){
        this.jumbSource.next(jumb);
    }  
}

首先創建了一個Jumbotron類,包含3個屬性title、lead、content分別對應jumbotron中的標題、lead和內容,然后寫一個服務提供商類,在這個類中聲明了一個rxjs的Subject對象(Subject是允許值被多播到多個觀察者的一種特殊的Observable),然后調用Subject的asObservable()聲明一個Observable對象jumb$來訂閱Subject發送的消息。最后聲明一個setJumbotron來發送修改過的Jumbotron對象。在AppComponent類中,我們就可以訂閱并更改jumbotron中的標題、lead和內容。代碼如下:

jumServ.jumb$.subscribe(
      jumb=>{
        this.title = jumb.title;
        this.lead = jumb.lead;
        this.content = jumb.content;
      });

router-outlet:路由出口,用于標記該在哪里顯示視圖,也就是說導航到的所有路由視圖都會在標簽中顯示。
angular-cli(以下簡稱ng)已經為我們寫好了基本的AppModule(Angular程序的根模塊,Angular通過引導根模塊來啟動該應用),在這里列出看一下:

import { BrowserModule } from "@angular/platform-browser";
import { NgModule } from "@angular/core";
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
import { AppComponent } from "./app.component";
@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    NgbModule.forRoot(),
    AppRoutingModule
  ],
  providers: [
    JumbotronServive,
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

@NgModule裝飾器將AppModule標記為 Angular 模塊類(也叫NgModule類)。 @NgModule接受一個元數據對象,告訴 Angular 如何編譯和啟動應用。
@NgModule有以下屬性:

imports — 本模塊聲明的組件模板需要的類所在的其它模塊,其中最重要的是BrowserModule,這個在每個在瀏覽器中運行應用都需要它。

declarations —聲明本模塊中擁有的視圖類,在AppModule中定義了應用的唯一組件AppComponent。

bootstrap — 根組件,Angular 創建它并插入index.html宿主頁面。

providers - 服務的創建者,并加入到全局服務列表中,可用于應用任何部分,在這里加入了JumbotronServive,用于提供bootstrap的jumbotron組件中title、lead、content的更新。

AppRoutingModule是應用的路由模塊,具體代碼:

import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { PageNotFoundComponent } from "./page-not-found.component";
const appRoutes: Routes = [
    {
        path:"",
        redirectTo:"/users",
        pathMatch:"full"
    },
    {path: "**", component: PageNotFoundComponent}
];
@NgModule({
    imports: [
        RouterModule.forRoot(appRoutes)
    ],
    exports:[
        RouterModule
    ]
})
export class AppRoutingModule{}

首先定義個路由數組,其中的路由對象包括路由路徑(path)、和路由對應的組件(component),因為我們的網站一打開就進入用戶管理界面,在導航到首頁時需要直接跳轉到users路由,首頁路由("")沒有對應組件,而是直接跳轉到users路由。path:"**"路由的作用是在找不到任何路由時,訪問PageNotFoundComponent組件。
定義路由數組后,用@NgModule裝飾器導入RouterModule,并將路由數組傳遞給RouterModule的forRoot數組。
最后導出RouterModule模塊。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107575.html

相關文章

  • 利用angular4nodejs-express構建一個簡單網站(六)—用戶模塊路由分析

    摘要:上一節解決了用戶注冊和登錄數據部分的內容。這一節開始分析用戶模塊用戶路由。用戶管理模塊分析主要代碼如下數組中,是構建子組件必須引入的模塊。當點擊標簽時,根據路由定義直接跳轉到組件,進行用戶的注冊操作。 上一節解決了用戶注冊和登錄數據部分的內容。這一節開始分析用戶模塊、用戶路由。## 用戶管理模塊UserModule分析 ##UserModule主要代碼如下: import { NgMo...

    cfanr 評論0 收藏0
  • 利用angular4nodejs-express構建一個簡單網站(十)—好友模塊

    摘要:我們從這一章開始分析這個好友模塊。在中提供了和一個請求攔截器,分別用于提供數據服務路由守衛服務和攔截服務。在這個模塊下共有三個組件。路由路由模塊負責整個模塊的全部路由。和,對應同一個組件,當導航到路徑時,,的為具體的。 上一章講解了用戶登錄的相關代碼。用戶登錄成功后,就會進入好友模塊,在好友模塊中會根據不同的用戶ID顯示相應的好友列表,點擊好友列表中的單個好友就會進入編輯單個好友頁面,...

    BicycleWarrior 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<