摘要:為了做到這一點,我創建了一個服務提供商,通過的消息推送來實現。最后聲明一個來發送修改過的對象。根組件,創建它并插入宿主頁面。路由的作用是在找不到任何路由時,訪問組件。定義路由數組后,用裝飾器導入,并將路由數組傳遞給的數組。
上一篇文章對用戶發來的注冊和登錄信息進行了處理,并實現了將注冊用戶信息插入到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
摘要:上一節解決了用戶注冊和登錄數據部分的內容。這一節開始分析用戶模塊用戶路由。用戶管理模塊分析主要代碼如下數組中,是構建子組件必須引入的模塊。當點擊標簽時,根據路由定義直接跳轉到組件,進行用戶的注冊操作。 上一節解決了用戶注冊和登錄數據部分的內容。這一節開始分析用戶模塊、用戶路由。## 用戶管理模塊UserModule分析 ##UserModule主要代碼如下: import { NgMo...
摘要:我們從這一章開始分析這個好友模塊。在中提供了和一個請求攔截器,分別用于提供數據服務路由守衛服務和攔截服務。在這個模塊下共有三個組件。路由路由模塊負責整個模塊的全部路由。和,對應同一個組件,當導航到路徑時,,的為具體的。 上一章講解了用戶登錄的相關代碼。用戶登錄成功后,就會進入好友模塊,在好友模塊中會根據不同的用戶ID顯示相應的好友列表,點擊好友列表中的單個好友就會進入編輯單個好友頁面,...
閱讀 2986·2021-11-16 11:45
閱讀 5161·2021-09-22 10:57
閱讀 1769·2021-09-08 09:36
閱讀 1591·2021-09-02 15:40
閱讀 2512·2021-07-26 23:38
閱讀 1192·2019-08-30 15:55
閱讀 928·2019-08-30 15:54
閱讀 1216·2019-08-29 14:06