国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

angular5 Reactive Form動態表單

MorePainMoreGain / 2380人閱讀

摘要:根據最近的使用總結一下在中使用創建表單需求創建一個帶驗證的表單如果表單驗證不通過則提交按鈕自定義驗證器需求密碼需要格式為數字字母下劃線位參考自定義密碼驗證通過驗證時需要返回密碼格式為數字字母下劃線位動態創建表單需求表單增

Angular5 Reactive Form

根據最近的使用, 總結一下在ngx中使用reactive form

1. 創建表單

需求: 創建一個帶驗證的表單, 如果表單驗證不通過則提交按鈕disabled=true



// app.component.ts

import {Component, OnInit} from "@angular/core";
import {FormBuilder, FormControl, FormGroup, Validators} from "@angular/forms";

@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
  name = "app";

  form: FormGroup;

  constructor(
    private fb: FormBuilder
  ){}

  ngOnInit(){
    this.form = this.fb.group({
      name: ["", Validators.required],
      password: ["", [Validators.required, Validators.minLength(6)]]
    });
  }

  submit(){
    if(this.form.valid){
      console.log("submiting...")
    }else{
      console.log("form is not valid")
    }
  }

  reset(){
    this.form.reset();
  }
}
2. 自定義驗證器

需求: 密碼需要格式為數字字母下劃線6-12位

參考: Custom validators

// app.component.ts

...

// 自定義密碼驗證
function ValidPwd(control: AbstractControl):any {
  const reg = /^w{6,12}$/;
  if(reg.test(control.value)){
    // 通過驗證時需要返回 null
    return null;
  }
  return {status: "error", message: "密碼格式為數字字母下劃線6-12位"}
}

...
export class AppComponent implements OnInit {
...
  ngOnInit(){
    this.form = this.fb.group({
      name: ["", Validators.required],
      password: ["", [Validators.required, ValidPwd]]
    });
  }
...
}
3. 動態創建表單

需求: 表單增加朋友選項, 默認顯示一個, 可以增加/刪除



+ -
// app.component.ts

...

export class AppComponent implements OnInit {
  name = "app";

  form: FormGroup;
  friends;

  constructor(
    private fb: FormBuilder
  ) {}

  ngOnInit() {
    this.form = this.fb.group({
      name: ["", Validators.required],
      password: ["", [Validators.required, ValidPwd]],
      friends: this.fb.array([this.createFriend()])
    });

    this.friends = this.form.get("friends") as FormArray;
  }

  /**
   * 動態創建表單
   * @returns {FormControl}
   */
  createFriend() {
    return this.fb.control("", Validators.required);
  }

  /**
   * 增加輸入框
   */
  addFriend(): void {
    this.friends.push(this.createFriend());

  }

  /**
   * 移除輸入框
   * @param {number} i
   */
  removeFriend(i: number): void {
    this.friends.removeAt(i);
  }

...

}

4. standalone

需求: 增加單選框控制表單

在Reactive表單中, 使用ngModel時, 會出現報錯

Error: 
      ngModel cannot be used to register form controls with a parent formGroup directive.

報錯中也提示了, 應該在input中增加[ngModelOptions]="{standalone: true}"

文檔中是這么介紹的:

standalone: Defaults to false. If this is set to true, the ngModel will not register itself with its parent form, and will act as if it"s not in the form. This can be handy if you have form meta-controls, a.k.a. form elements nested in the 
tag that control the display of the form, but don"t contain form data.

現在表單變成這樣:





  
+ -
mobile  landLine

app.componen.ts中增加contactType變量, 表單實例中增加contact:

// app.component.ts

...

export class AppComponent implements OnInit {
  name = "app";

  form: FormGroup;
  friends;
  contactType:number = 0;

  constructor(
    private fb: FormBuilder
  ) {}

  ngOnInit() {
    this.form = this.fb.group({
      name: ["", Validators.required],
      password: ["", [Validators.required, ValidPwd]],
      friends: this.fb.array([this.createFriend()]),
      contact: ["", Validators.required]
    });

    this.friends = this.form.get("friends") as FormArray;
  }

  /**
   * 動態創建表單
   * @returns {FormControl}
   */
  createFriend() {
    return this.fb.control("", Validators.required);
  }

  /**
   * 增加輸入框
   */
  addFriend(): void {
    this.friends.push(this.createFriend());

  }

  /**
   * 移除輸入框
   * @param {number} i
   */
  removeFriend(i: number): void {
    this.friends.removeAt(i);
  }

  submit() {
    if (this.form.valid) {
      console.log("submitting...");
    } else {
      console.log("form is not valid");
    }
  }

  reset() {
    this.form.reset();
  }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94617.html

相關文章

  • Java11 HttpClient小試牛刀

    序 本文主要研究一下Java11的HttpClient的基本使用。 變化 從java9的jdk.incubator.httpclient模塊遷移到java.net.http模塊,包名由jdk.incubator.http改為java.net.http 原來的諸如HttpResponse.BodyHandler.asString()方法變更為HttpResponse.BodyHandlers.of...

    Bmob 評論0 收藏0
  • Java Reactive Web設計與實現

    摘要:概念響應式編程,異步非阻塞就是響應式編程,與之相對應的是命令式編程。的另外一種實現方式就是消息隊列。非阻塞設計利用規范中的實現實現代碼鏈接 注: 本文是由讀者觀看小馬哥公開課視頻過程中的筆記整理而成。更多Spring Framework文章可參看筆者個人github: spring-framework-lesson 。 0. 編程模型與并發模型 Spring 5實現了一部分Reacti...

    siberiawolf 評論0 收藏0
  • 動態生成form表單,不再為表單煩惱

    摘要:具有數據收集校驗和提交功能的表單生成器,支持雙向數據綁定和事件擴展,組件包含有復選框單選框輸入框下拉選擇框等表單元素以及省市區三級聯動時間選擇日期選擇顏色選擇滑塊評分框架樹型文件圖片上傳等功能組件。 form-create 具有數據收集、校驗和提交功能的表單生成器,支持雙向數據綁定和事件擴展,組件包含有復選框、單選框、輸入框、下拉選擇框等表單元素以及省市區三級聯動,時間選擇,日期選擇,...

    kamushin233 評論0 收藏0
  • 使用form-create輕松生成高品質的form表單[附原理圖]

    摘要:目的是節省開發人員在表單頁面上耗費的時間,從而更專注于功能開發。使用可快速便捷的生成日常開發中所需的各種表單。可通過后端返回生成規則,進行渲染。 form-create 具有動態渲染、數據收集、校驗和提交功能的表單生成器,支持雙向數據綁定、事件擴展以及自定義組件,可快速生成包含有省市區三級聯動、時間選擇、日期選擇等17種功能組件。 已兼容iview2.和iview3.版本 Github...

    phodal 評論0 收藏0
  • 《Java編程方法論:響應式RxJava與代碼設計實戰》序

    摘要:原文鏈接編程方法論響應式與代碼設計實戰序,來自于微信公眾號次靈均閣正文內容在一月的架構和設計趨勢報告中,響應式編程和函數式仍舊編列在第一季度的早期采納者中。 原文鏈接:《Java編程方法論:響應式RxJava與代碼設計實戰》序,來自于微信公眾號:次靈均閣 正文內容 在《2019 一月的InfoQ 架構和設計趨勢報告》1中,響應式編程(Reactive Programming)和函數式...

    PAMPANG 評論0 收藏0

發表評論

0條評論

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