亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

利用angular4和nodejs-express構(gòu)建一個簡單的網(wǎng)站(九)—用戶登錄

Snailclimb / 1828人閱讀

摘要:好了,廢話少說,繼續(xù)吧這一章主要講利用控制用戶登錄。在前面的用戶注冊表單中使用了的響應(yīng)式表單。在構(gòu)造函數(shù)中聲明了一個對象一個對象和對象對象。并在構(gòu)造函數(shù)中用的方法更新了網(wǎng)頁的標題。接下來導(dǎo)航到下一個頁面,并提示用戶登錄成功。

最近工作比較忙,一直沒有更新文章。原來看別人的文章感覺很過癮,現(xiàn)在自己寫才發(fā)現(xiàn),要堅持下去真的很難。好了,廢話少說,繼續(xù)吧!
這一章主要講利用angularJs控制用戶登錄。在前面的用戶注冊表單中使用了angular的響應(yīng)式表單。為了對angular的知識學(xué)習的全面一點,在用戶登錄的表單中,使用了模板驅(qū)動型表單。

先從html代碼開始

在這個html文件的

標簽中,(ngSubmit)="onSubmit()"和用戶注冊表單一樣,用于處理表單的提交操作,為了實現(xiàn)在表單不合法時提交按鈕的disabled為false,需要讓按鈕能夠訪問到表單,從而獲取到表單的狀態(tài),所以,需要在標簽中定義了一個模板引用變量 #loginForm,并且把賦值為“ngForm”,同時在submit按鈕標簽中加入:[disabled]="!loginForm.form.valid"。
兩個標簽分別輸入用戶名和密碼,通過ngModel創(chuàng)建雙向綁定到組件類的User對象的name和password屬性,用于讀取和寫入輸入控件的值。這里需要注意一點:當在表單中使用 [(ngModel)] 時,必須要定義 name 屬性。
模板驅(qū)動表單的驗證都在html代碼中實現(xiàn),需要完成以下幾項任務(wù):

首先要定義模板引用變量,并賦值為"ngModel",注意觀察標簽中的 #name="ngModel"和#password="ngModel"。

兩個用戶名和密碼的驗證規(guī)則比較簡單,只需required,在兩個標簽中加入此屬性。

顯示驗證錯誤信息和注冊表單差不多,當模板引用變量即兩個輸入框變?yōu)閐irty(控件值變化了)和touched(控件值被訪問過)狀態(tài)時,如果控件值無效(invalid),就顯示

標簽包裹的內(nèi)容。

html部分的內(nèi)容就這些了,下面我們看一下控件類的內(nèi)容。

控件類

先把代碼放出來,后面慢慢分析。

@Component({
  selector: "app-login",
  templateUrl: "./login.component.html",
  styleUrls: ["./login.component.css"]
})
export class LoginComponent {
  user: User = new User(0, "", "", "");
  constructor(
    private route: Router,
    private jumService: JumbotronServive,
    private userServ: UserService,
  private tokenServ: AuthTokenService) {
    jumService.setJumbotron(new Jumbotron("Login",
      `Please login with your user name and password first`,
      ``));
  }
  onSubmit() {
    this.userServ.getUser(this.user).subscribe(
      (resp) => {
        this.tokenServ.setToken(resp.body["token"]);
        this.route.navigate(["/birthday"]);
        alert("登錄成功!");
      },
      (err)=>
      alert(this.userServ.handleError(err)),
      () => console.log("The Post observable is now completed. ")
    )
  }
}

控件類主要完成了如下功能:

首先初始化了一個User類的對象,用于ngModel雙向綁定到控件。保證在html控件值變化時,綁定的User類的屬性同步變化。

在構(gòu)造函數(shù)中聲明了一個Router對象、一個JumbotronServive對象和UserService對象、AuthTokenService對象。并在構(gòu)造函數(shù)中用JumbotronServive的setJumbotron方法更新了網(wǎng)頁的標題。(JumbotronServive的setJumbotron方法具體內(nèi)容請看前面的文章。)

onSubmit()函數(shù)在表單提交時被觸發(fā),在該函數(shù)中UserService的getUser()函數(shù),getUser()函數(shù)向服務(wù)器發(fā)送了用戶名和密碼,如果服務(wù)器驗證成功,會發(fā)送回jwt認證信息的token字符串,其中包括了userid。在onSubmit()函數(shù)中調(diào)用AuthTokenService的setToken()函數(shù),將這個字符串存儲到本地存儲,用于導(dǎo)航到下一個頁面(生日頁面)時驗證用戶信息。接下來導(dǎo)航到下一個頁面,并提示用戶登錄成功。如果發(fā)生錯誤,提示錯誤原因。

用戶登錄主要的內(nèi)容就這些了。其中還有一個小技巧性的東西就是在輸入密碼的時候,因為標簽的type=password,顯示的輸入內(nèi)容為“.”,很容易輸錯。我在這個控件上放了一個可以切換的圖片,用于讓用戶選擇是否查看明文。實現(xiàn)的方法主要是改變控件的attr屬性。如果需要具體實現(xiàn)方法的朋友,可以給我留言,我會在回復(fù)中告訴大家。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/115961.html

相關(guān)文章

  • 利用angular4nodejs-express構(gòu)建一個簡單網(wǎng)站)—用戶登錄

    摘要:好了,廢話少說,繼續(xù)吧這一章主要講利用控制用戶登錄。在前面的用戶注冊表單中使用了的響應(yīng)式表單。在構(gòu)造函數(shù)中聲明了一個對象一個對象和對象對象。并在構(gòu)造函數(shù)中用的方法更新了網(wǎng)頁的標題。接下來導(dǎo)航到下一個頁面,并提示用戶登錄成功。 最近工作比較忙,一直沒有更新文章。原來看別人的文章感覺很過癮,現(xiàn)在自己寫才發(fā)現(xiàn),要堅持下去真的很難。好了,廢話少說,繼續(xù)吧!這一章主要講利用angularJs控制...

    opengps 評論0 收藏0
  • 利用angular4nodejs-express構(gòu)建一個簡單網(wǎng)站(五)—用戶注冊登錄-Htt

    摘要:后臺注冊成功后,會返回狀態(tài)的認證信息。后臺數(shù)據(jù)的處理,詳見利用和構(gòu)建一個簡單的網(wǎng)站三訪問。在這個方法中分別針對這兩種錯誤進行處理。 上一節(jié)簡單介紹了一下利用angular構(gòu)建的主路由模塊,根據(jù)上一節(jié)的介紹,主頁面加載時直接跳轉(zhuǎn)到用戶管理界面,下面就來介紹一下用戶管理模塊。啟動應(yīng)用后,初始界面應(yīng)該是這樣的: showImg(https://segmentfault.com/img/bV3...

    Lin_R 評論0 收藏0
  • 利用angular4nodejs-express構(gòu)建一個簡單網(wǎng)站(五)—用戶注冊登錄-Htt

    摘要:后臺注冊成功后,會返回狀態(tài)的認證信息。后臺數(shù)據(jù)的處理,詳見利用和構(gòu)建一個簡單的網(wǎng)站三訪問。在這個方法中分別針對這兩種錯誤進行處理。 上一節(jié)簡單介紹了一下利用angular構(gòu)建的主路由模塊,根據(jù)上一節(jié)的介紹,主頁面加載時直接跳轉(zhuǎn)到用戶管理界面,下面就來介紹一下用戶管理模塊。啟動應(yīng)用后,初始界面應(yīng)該是這樣的: showImg(https://segmentfault.com/img/bV3...

    feng409 評論0 收藏0

發(fā)表評論

0條評論

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