摘要:使用搭建成熟可靠的后臺(tái)系統(tǒng)四完善動(dòng)態(tài)表單組件添加正則驗(yàn)證添加錯(cuò)誤提示添加正則驗(yàn)證先來(lái)設(shè)置一些錯(cuò)誤提示,以及添加正則驗(yàn)證上一章可能遺留了部分路徑錯(cuò)誤,可以自行調(diào)整郵箱格式不正確請(qǐng)選擇這里是提供的一些正則
使用ng2-admin搭建成熟可靠的后臺(tái)系統(tǒng) -- ng2-admin(四) 完善動(dòng)態(tài)表單組件
添加正則驗(yàn)證添加正則驗(yàn)證
添加錯(cuò)誤提示
先來(lái)設(shè)置一些錯(cuò)誤提示,以及添加正則驗(yàn)證(上一章可能遺留了部分路徑錯(cuò)誤,可以自行調(diào)整)
user-add.service.ts
import { Injectable } from "@angular/core"; import { QuestionBase, InputQuestion, SelectQuestion } from "../../../../theme/components/dynamic-form-components/dynamic-form-base"; import { regExp } from "./../../../api/universal/regExp"; @Injectable() export class UserAddService { getQuestions() { let questions: QuestionBase[] = [ new InputQuestion({ key: "firstName", label: "First name", value: "Bombasto", required: true, order: 1 }), new InputQuestion({ key: "emailAddress", label: "Email", type: "email", required: true, reg: regExp.email, prompt: "郵箱格式不正確", order: 2 }), new SelectQuestion({ key: "brave", label: "Bravery Rating", value: "", options: [ { key: "請(qǐng)選擇", value: "" }, { key: "Solid", value: "solid" }, { key: "Great", value: "great" }, { key: "Good", value: "good" }, { key: "Unproven", value: "unproven" } ], required: true, order: 3 }) ]; return questions.sort((a, b) => a.order - b.order); } }
pages/api/universal/regExp.ts 這里是提供的一些正則
export const regExp = { number: /^d{1,6}$/, tel: /^(+86)?(s)?(d{1,4}-)?d{5,11}$/, phone: /^1[34578]d{9}$/, email: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/, text: /^[a-zA-Zu4e00-u9fa5]{2,9}/, name: /^[a-zA-Zu4e00-u9fa5]{2,9}/, file: /[2-9]{1,2}/, password: /^(?=.*?[A-Za-z]+)(?=.*?[0-9]+)(?=.*?[A-Za-z]).{6,16}$/, strongPassword: /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-ZW_]+$)(?![a-z0-9]+$)(?![a-zW_]+$)(?![0-9W_]+$)[a-zA-Z0-9W_]{6,16}$/, //要求大小寫(xiě)字母數(shù)字特殊符號(hào)四選三 approvalStatus: /(2|3)/, };添加錯(cuò)誤提示
在驗(yàn)證無(wú)法通過(guò)時(shí),用戶不清楚自己未通過(guò)驗(yàn)證的選項(xiàng),所以現(xiàn)在需要加入錯(cuò)誤提示,友好的提示用戶。
添加一些樣式
在 dynamic-form.component.ts 添加
import "style-loader!./dynamic-fom-components.component.scss";
dynamic-fom-components.component.scss
$errorColor: #fa758e; .form-container { display: flex; justify-content: flex-start; align-items: center; label { width: 10%; margin-right: 20px; i { color: $errorColor; margin-right: 5px; } } .form-control { width: 25%; } .prompt-error { color: $errorColor; margin-left: 20px; } }
添加默認(rèn)的錯(cuò)誤提示
question-base.ts
this.prompt = options.prompt || "該項(xiàng)為必填/選項(xiàng)";
添加錯(cuò)誤提示
我們使用的是響應(yīng)式表單組成的動(dòng)態(tài)表單,所以對(duì)應(yīng)的 FormControl 應(yīng)該有以下幾個(gè)屬性可以幫助我們添加提示
valid 是否驗(yàn)證通過(guò)
touched 是否操作過(guò)
value 控件的值
現(xiàn)在來(lái)為控件添加提示樣式
先為 QuestionControlService 添加一個(gè)公開(kāi)的方法,用于設(shè)置 setter
question-control.service.ts
... export class QuestionControlService { ... public getControlProperty(): void { Object.defineProperty(this, "isValid", { get() { return this.form.controls[this.question.key].valid; } }); Object.defineProperty(this, "isTouched", { get() { return this.form.controls[this.question.key].touched; } }); } }
這里是將用戶表單中 FormControl 的 valid 和 touched 屬性設(shè)置為 getter, 以便實(shí)時(shí)更新?tīng)顟B(tài)。
現(xiàn)在來(lái)為 InputTextboxComponent 注入這幾個(gè) getter
input-textbox.component.ts
export class InputTextboxComponent { ... constructor(private qcs: QuestionControlService) { qcs.getControlProperty.call(this, null); } }
然后需要在 html 中添加一些規(guī)則, 來(lái)顯示這些錯(cuò)誤提示
input-textbox.component.html
{{question.prompt}}
這樣就大功告成,以下是實(shí)際效果圖
當(dāng)驗(yàn)證不通過(guò)時(shí):
錯(cuò)誤提示出現(xiàn),輸入框有紅色線框環(huán)繞,且提交按鈕為置灰狀態(tài)
當(dāng)驗(yàn)證通過(guò)時(shí):
所有選項(xiàng)有正確提示,且表單可提交
讀者可自行完成 InputSelectComponent 的錯(cuò)誤提示驗(yàn)證
下章將會(huì)講解如何提交一個(gè)表單,基本的增刪改查,將會(huì)使用到 httpClient.
(此章以及此章前,代碼都提交在 ng2-admin 的 development 分支上,在未來(lái)會(huì)分開(kāi)分支,方便讀者練習(xí))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/90608.html
摘要:使用搭建成熟可靠的后臺(tái)系統(tǒng)三完善動(dòng)態(tài)表單添加樣式。下一章會(huì)講解,一個(gè)集成的服務(wù),來(lái)完成我們的提交,在將來(lái)的篇章里會(huì)在我們的組件中加入使其變得更加靈活。 使用ng2-admin搭建成熟可靠的后臺(tái)系統(tǒng) -- ng2-admin(三) 完善動(dòng)態(tài)表單 添加樣式。 抽離組件。 添加組件樣式 上一篇文章創(chuàng)建了兩個(gè),組件,現(xiàn)在使用bootstrap來(lái)給他們添加一些樣式 首先需要一個(gè)公用的 s...
摘要:使用搭建成熟可靠的后臺(tái)系統(tǒng)二構(gòu)建動(dòng)態(tài)表單構(gòu)建一個(gè)動(dòng)態(tài)表單,動(dòng)態(tài)生成控件,驗(yàn)證規(guī)則?,F(xiàn)在來(lái)創(chuàng)建它的子組件從上面的組件可以看出,未來(lái)需要添加組件時(shí),只需要添加一種類(lèi)型,可以用決定顯示哪種類(lèi)型的問(wèn)題。 使用ng2-admin搭建成熟可靠的后臺(tái)系統(tǒng) -- ng2-admin(二) 1.構(gòu)建動(dòng)態(tài)表單 構(gòu)建一個(gè)動(dòng)態(tài)表單,動(dòng)態(tài)生成控件,驗(yàn)證規(guī)則。 創(chuàng)建一個(gè)input組件,一個(gè)select組件 將...
摘要:注意在配置完成后,需要重新啟動(dòng)項(xiàng)目使配置生效。每一行的內(nèi)容,由數(shù)據(jù)內(nèi)容決定,例如有三條數(shù)據(jù),應(yīng)顯示三行數(shù)據(jù),數(shù)據(jù)由組件自身請(qǐng)求獲取,所以應(yīng)該有一個(gè)自身的屬性用于承載數(shù)據(jù)。注意這里將換成了,所以組件的也需要替換,否則會(huì)報(bào)錯(cuò)。 使用ng2-admin搭建成熟可靠的后臺(tái)系統(tǒng) -- ng2-admin(六) 完善動(dòng)態(tài)表單組件 先來(lái)張本章節(jié)最終效果圖showImg(https://segmen...
摘要:創(chuàng)建一個(gè)工具類(lèi),負(fù)責(zé)提供以及完成拼接參數(shù)的工作。根據(jù)我們的配置,來(lái)創(chuàng)建這個(gè)文件。因?yàn)槭潜韱翁峤唬晕覀冃陆ㄒ粋€(gè)服務(wù),由它來(lái)完成表單提交的最后一步。 使用ng2-admin搭建成熟可靠的后臺(tái)系統(tǒng) -- ng2-admin(五) 完善動(dòng)態(tài)表單組件 升級(jí)Angular 4.1 -> 4.3 添加 json-server 模擬數(shù)據(jù) 創(chuàng)建自己的 http 完成一次表單提交 升級(jí)Angu...
摘要:云函數(shù)是萬(wàn)金油為實(shí)現(xiàn)用戶游戲數(shù)據(jù)存儲(chǔ)和每日任務(wù)分發(fā),我們最先用了存儲(chǔ)服務(wù)和云引擎。不過(guò)我們并沒(méi)有用提供的來(lái)直接調(diào)用存儲(chǔ)服務(wù),而是選擇用調(diào)用云引擎里面的云函數(shù),然后通過(guò)云函數(shù)調(diào)用存儲(chǔ)服務(wù)來(lái)實(shí)現(xiàn)相應(yīng)的邏輯。 【 玩轉(zhuǎn) LeanCloud 】開(kāi)發(fā)者投稿分享: 作者:趙天澤 作為一個(gè)通過(guò) LeanCloud 入門(mén)后端開(kāi)發(fā)的小白,一年多的開(kāi)發(fā)歷程讓我收獲滿滿。多個(gè)項(xiàng)目也在 LeanCloud 可...
閱讀 3247·2021-11-19 09:40
閱讀 3709·2021-11-16 11:52
閱讀 3042·2021-11-11 16:55
閱讀 3247·2019-08-30 15:55
閱讀 1249·2019-08-30 13:08
閱讀 1725·2019-08-29 17:03
閱讀 3087·2019-08-29 16:19
閱讀 2639·2019-08-29 13:43