摘要:上一章通過(guò)用戶注冊(cè)講解了響應(yīng)式表單,這章主要講解如何向服務(wù)器提交注冊(cè)數(shù)據(jù)并導(dǎo)航到好友信息模塊。利用的方法將這個(gè)憑證存儲(chǔ)到本地。針對(duì)一個(gè)進(jìn)行數(shù)據(jù)存儲(chǔ)。當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。
上一章通過(guò)用戶注冊(cè)講解了響應(yīng)式表單ReactiveForm,這章主要講解如何向服務(wù)器提交注冊(cè)數(shù)據(jù)并導(dǎo)航到好友信息模塊。
提交注冊(cè)信息向服務(wù)器提交信息是通過(guò)模板中標(biāo)簽中的(ngSubmit)="onSubmit()進(jìn)行提交的。在填寫(xiě)好正確的信息后,按鈕會(huì)變?yōu)榭捎脿顟B(tài),點(diǎn)擊按鈕后,onSubmit()方法就會(huì)得到執(zhí)行,onSubmit()方法的代碼為:
onSubmit() { this.user = this.prepareSaveUser(); this.userSer.saveUser(this.user).subscribe( () => { this.tokenServ.setToken(value["token"]); this.router.navigate(["/birthday"]); alert("注冊(cè)成功!"); }, (err) => alert(this.userSer.handleError(err)), () => { console.log("The post observable is now completed."); } );
prepareSaveUser()方法用于將FormGroup類型對(duì)象registForm的屬性值賦給一個(gè)User對(duì)象,并返回這個(gè)對(duì)象,用于發(fā)送用戶數(shù)據(jù)(利用FormGroup構(gòu)建響應(yīng)式表單的內(nèi)容,請(qǐng)看第七章的內(nèi)容)。prepareSaveUser()方法的代碼如下:
prepareSaveUser(): User { const formModel = this.registForm.value; const saveUser: User = { id: this.user.id, name: formModel.name as string, password: formModel.password as string, email: formModel.email }; return saveUser; }
把prepareSaveUser()方法的返回值賦值給User對(duì)象之后,調(diào)用UserService類的saveUser()方法,將注冊(cè)信息發(fā)送到服務(wù)器(關(guān)于UserService服務(wù)類,請(qǐng)看第五章的內(nèi)容)。如果注冊(cè)成功,服務(wù)器會(huì)返回一個(gè)token字符串,存儲(chǔ)了從服務(wù)器獲取需要用戶認(rèn)證的內(nèi)容時(shí)憑證。利用AuthTokenService的setToken()方法將這個(gè)憑證存儲(chǔ)到本地。AuthTokenService類的代碼:
import { Injectable } from "@angular/core"; @Injectable() export class AuthTokenService{ setToken(token:string){ sessionStorage.removeItem("token"); if((token as string).length != 0){ sessionStorage.token = token; console.log("sessionStorage.token: " + sessionStorage.token); } } getToken(){ if(sessionStorage.token){ return sessionStorage.token; }else{ return null; } } }
AuthTokenService類是一個(gè)服務(wù)類,因?yàn)槠渌K也需要用到,將它放到AppModule的providers數(shù)組中:
@NgModule({ declarations: [ ... ], imports: [ ... ], providers: [ ... AuthTokenService ], bootstrap: [AppComponent] }) export class AppModule { }
這個(gè)服務(wù)提供商的主要工作就是將token的值存儲(chǔ)到sessionStorage中,在需要的時(shí)候進(jìn)行取出。 sessionStorage針對(duì)一個(gè) session 進(jìn)行數(shù)據(jù)存儲(chǔ)。當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。
如果在注冊(cè)過(guò)程中發(fā)現(xiàn)錯(cuò)誤,就在對(duì)話框中顯示UserService的handleError()方法返回的錯(cuò)誤提示信息。
如果注冊(cè)成功,就調(diào)用Router類的navigate()方法,跳轉(zhuǎn)到/birthday的url,進(jìn)入BirthdaysModule模塊。
重置Form如果需要重新填寫(xiě)表單內(nèi)容,按Cancel按鈕后,將觸發(fā)revert()方法,代碼如下:
reset() { this.user = new User(0, "", "", ""); this.registForm.reset({ name: this.user.name, password: this.user.password, email: this.user.email }) }
這里主要調(diào)用了FormGroup類的reset()方法,將所有屬性值設(shè)為this.user對(duì)象的屬性值,從而實(shí)現(xiàn)表單的重置。
總結(jié)用戶注冊(cè)的內(nèi)容大致就是這些,主要知識(shí)包括angular的HttpClient、ReactForm兩方面的知識(shí)。下一章將要講解用戶登錄的內(nèi)容,在用戶登錄表單中,我將使用模板驅(qū)動(dòng)型表單進(jìn)行操作。敬請(qǐng)期待......
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/115790.html
摘要:上一章通過(guò)用戶注冊(cè)講解了響應(yīng)式表單,這章主要講解如何向服務(wù)器提交注冊(cè)數(shù)據(jù)并導(dǎo)航到好友信息模塊。利用的方法將這個(gè)憑證存儲(chǔ)到本地。針對(duì)一個(gè)進(jìn)行數(shù)據(jù)存儲(chǔ)。當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。 上一章通過(guò)用戶注冊(cè)講解了響應(yīng)式表單ReactiveForm,這章主要講解如何向服務(wù)器提交注冊(cè)數(shù)據(jù)并導(dǎo)航到好友信息模塊。 提交注冊(cè)信息 向服務(wù)器提交信息是通過(guò)模板中標(biāo)簽中的(ngSubmit)=onSu...
摘要:后臺(tái)注冊(cè)成功后,會(huì)返回狀態(tài)的認(rèn)證信息。后臺(tái)數(shù)據(jù)的處理,詳見(jiàn)利用和構(gòu)建一個(gè)簡(jiǎn)單的網(wǎng)站三訪問(wèn)。在這個(gè)方法中分別針對(duì)這兩種錯(cuò)誤進(jìn)行處理。 上一節(jié)簡(jiǎn)單介紹了一下利用angular構(gòu)建的主路由模塊,根據(jù)上一節(jié)的介紹,主頁(yè)面加載時(shí)直接跳轉(zhuǎn)到用戶管理界面,下面就來(lái)介紹一下用戶管理模塊。啟動(dòng)應(yīng)用后,初始界面應(yīng)該是這樣的: showImg(https://segmentfault.com/img/bV3...
摘要:后臺(tái)注冊(cè)成功后,會(huì)返回狀態(tài)的認(rèn)證信息。后臺(tái)數(shù)據(jù)的處理,詳見(jiàn)利用和構(gòu)建一個(gè)簡(jiǎn)單的網(wǎng)站三訪問(wèn)。在這個(gè)方法中分別針對(duì)這兩種錯(cuò)誤進(jìn)行處理。 上一節(jié)簡(jiǎn)單介紹了一下利用angular構(gòu)建的主路由模塊,根據(jù)上一節(jié)的介紹,主頁(yè)面加載時(shí)直接跳轉(zhuǎn)到用戶管理界面,下面就來(lái)介紹一下用戶管理模塊。啟動(dòng)應(yīng)用后,初始界面應(yīng)該是這樣的: showImg(https://segmentfault.com/img/bV3...
閱讀 2283·2021-09-07 09:58
閱讀 3472·2019-08-30 14:07
閱讀 1352·2019-08-29 12:32
閱讀 722·2019-08-29 11:06
閱讀 3744·2019-08-26 18:18
閱讀 3807·2019-08-26 17:35
閱讀 1439·2019-08-26 11:35
閱讀 670·2019-08-26 11:35