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

資訊專欄INFORMATION COLUMN

使用ng2-admin搭建成熟可靠的后臺系統(tǒng) -- ng2-admin(四)

HtmlCssJs / 2132人閱讀

摘要:使用搭建成熟可靠的后臺系統(tǒng)四完善動態(tài)表單組件添加正則驗證添加錯誤提示添加正則驗證先來設(shè)置一些錯誤提示,以及添加正則驗證上一章可能遺留了部分路徑錯誤,可以自行調(diào)整郵箱格式不正確請選擇這里是提供的一些正則

使用ng2-admin搭建成熟可靠的后臺系統(tǒng) -- ng2-admin(四) 完善動態(tài)表單組件

添加正則驗證

添加錯誤提示

添加正則驗證

先來設(shè)置一些錯誤提示,以及添加正則驗證(上一章可能遺留了部分路徑錯誤,可以自行調(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: "請選擇", 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}$/,  //要求大小寫字母數(shù)字特殊符號四選三

  approvalStatus: /(2|3)/,
};
添加錯誤提示
在驗證無法通過時,用戶不清楚自己未通過驗證的選項,所以現(xiàn)在需要加入錯誤提示,友好的提示用戶。

添加一些樣式

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)的錯誤提示

question-base.ts

this.prompt = options.prompt || "該項為必填/選項";

添加錯誤提示

我們使用的是響應(yīng)式表單組成的動態(tài)表單,所以對應(yīng)的 FormControl 應(yīng)該有以下幾個屬性可以幫助我們添加提示

valid 是否驗證通過

touched 是否操作過

value 控件的值

現(xiàn)在來為控件添加提示樣式

先為 QuestionControlService 添加一個公開的方法,用于設(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, 以便實時更新狀態(tài)。

現(xiàn)在來為 InputTextboxComponent 注入這幾個 getter

input-textbox.component.ts

export class InputTextboxComponent {
  ...
  constructor(private qcs: QuestionControlService) {
    qcs.getControlProperty.call(this, null);
  }
}

然后需要在 html 中添加一些規(guī)則, 來顯示這些錯誤提示

input-textbox.component.html

{{question.prompt}}

這樣就大功告成,以下是實際效果圖

當(dāng)驗證不通過時:

錯誤提示出現(xiàn),輸入框有紅色線框環(huán)繞,且提交按鈕為置灰狀態(tài)

當(dāng)驗證通過時:

所有選項有正確提示,且表單可提交

讀者可自行完成 InputSelectComponent 的錯誤提示驗證

下章將會講解如何提交一個表單,基本的增刪改查,將會使用到 httpClient.

(此章以及此章前,代碼都提交在 ng2-admin 的 development 分支上,在未來會分開分支,方便讀者練習(xí))

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

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

相關(guān)文章

  • 使用ng2-admin搭建成熟可靠后臺系統(tǒng) -- ng2-admin(三)

    摘要:使用搭建成熟可靠的后臺系統(tǒng)三完善動態(tài)表單添加樣式。下一章會講解,一個集成的服務(wù),來完成我們的提交,在將來的篇章里會在我們的組件中加入使其變得更加靈活。 使用ng2-admin搭建成熟可靠的后臺系統(tǒng) -- ng2-admin(三) 完善動態(tài)表單 添加樣式。 抽離組件。 添加組件樣式 上一篇文章創(chuàng)建了兩個,組件,現(xiàn)在使用bootstrap來給他們添加一些樣式 首先需要一個公用的 s...

    張憲坤 評論0 收藏0
  • 使用ng2-admin搭建成熟可靠后臺系統(tǒng) -- ng2-admin(二)

    摘要:使用搭建成熟可靠的后臺系統(tǒng)二構(gòu)建動態(tài)表單構(gòu)建一個動態(tài)表單,動態(tài)生成控件,驗證規(guī)則?,F(xiàn)在來創(chuàng)建它的子組件從上面的組件可以看出,未來需要添加組件時,只需要添加一種類型,可以用決定顯示哪種類型的問題。 使用ng2-admin搭建成熟可靠的后臺系統(tǒng) -- ng2-admin(二) 1.構(gòu)建動態(tài)表單 構(gòu)建一個動態(tài)表單,動態(tài)生成控件,驗證規(guī)則。 創(chuàng)建一個input組件,一個select組件 將...

    FleyX 評論0 收藏0
  • 使用ng2-admin搭建成熟可靠后臺系統(tǒng) -- ng2-admin(六)

    摘要:注意在配置完成后,需要重新啟動項目使配置生效。每一行的內(nèi)容,由數(shù)據(jù)內(nèi)容決定,例如有三條數(shù)據(jù),應(yīng)顯示三行數(shù)據(jù),數(shù)據(jù)由組件自身請求獲取,所以應(yīng)該有一個自身的屬性用于承載數(shù)據(jù)。注意這里將換成了,所以組件的也需要替換,否則會報錯。 使用ng2-admin搭建成熟可靠的后臺系統(tǒng) -- ng2-admin(六) 完善動態(tài)表單組件 先來張本章節(jié)最終效果圖showImg(https://segmen...

    bingo 評論0 收藏0
  • 使用ng2-admin搭建成熟可靠后臺系統(tǒng) -- ng2-admin(五)

    摘要:創(chuàng)建一個工具類,負(fù)責(zé)提供以及完成拼接參數(shù)的工作。根據(jù)我們的配置,來創(chuàng)建這個文件。因為是表單提交,所以我們新建一個服務(wù),由它來完成表單提交的最后一步。 使用ng2-admin搭建成熟可靠的后臺系統(tǒng) -- ng2-admin(五) 完善動態(tài)表單組件 升級Angular 4.1 -> 4.3 添加 json-server 模擬數(shù)據(jù) 創(chuàng)建自己的 http 完成一次表單提交 升級Angu...

    MiracleWong 評論0 收藏0
  • 手游開發(fā)如何選擇后端服務(wù)

    摘要:云函數(shù)是萬金油為實現(xiàn)用戶游戲數(shù)據(jù)存儲和每日任務(wù)分發(fā),我們最先用了存儲服務(wù)和云引擎。不過我們并沒有用提供的來直接調(diào)用存儲服務(wù),而是選擇用調(diào)用云引擎里面的云函數(shù),然后通過云函數(shù)調(diào)用存儲服務(wù)來實現(xiàn)相應(yīng)的邏輯。 【 玩轉(zhuǎn) LeanCloud 】開發(fā)者投稿分享: 作者:趙天澤 作為一個通過 LeanCloud 入門后端開發(fā)的小白,一年多的開發(fā)歷程讓我收獲滿滿。多個項目也在 LeanCloud 可...

    codecook 評論0 收藏0

發(fā)表評論

0條評論

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