新聞中心
前言
眾所周知Angular響應(yīng)式表單相比較模板驅(qū)動表單更大操作性、更易測試性。因此,我更推薦這類表單創(chuàng)造方式。
當(dāng)一個用于修改用戶信息的表單,數(shù)據(jù)的來源總是來自遠(yuǎn)程;而對于一個 FormGroup 的創(chuàng)建總在 ngOnInit 中完成。因此,這里會有一個表單更新值的問題。
而通常我們會透過 FormGroup 下的三種方式 setValue、patchValue、reset 將值寫入表單當(dāng)中。
當(dāng)然,或許我說的這三種方式時你壓根就沒有做過,那說明在表單上你依賴的是雙向綁定 [(ngModel)],這本身就不是符合 Angular 響應(yīng)式表單的牛B之處了。因此,在此我們不討論這種這種方式。下面來一起看看詳細(xì)的介紹:
一、創(chuàng)建響應(yīng)式表單
我們模擬一個用戶信息修改的表單所需要的字段,可能包括:email、nickname 等。
如果以API的方式與現(xiàn)實字段之間產(chǎn)生一個關(guān)聯(lián),那么 FormGroup 表示一個表單,F(xiàn)ormControl 表示表單中的字段。因此,F(xiàn)ormControl 必須包裹在 FromGroup 下面。
下面,我們先簡單的構(gòu)建一個響應(yīng)式表單。
別忘記導(dǎo)入 ReactiveFormsModule 模塊。
@Component({ selector: 'app-validation', template: `` }) export class UserEditComponent { constructor(private fb: FormBuilder, private route: ActivatedRoute) {} ngOnInit() { this.form = this.fb.group({ email: ['', Validators.compose([Validators.required, Validators.email])], nickname: ['', [Validators.required]] }); this.route.params .switchMap((params: Params) => loadUser(+params['id'])) .subscribe(data => { // Updating value }); } loadUser() { return Observable.of({ email: 'xx@xx.com', nickname: 'cipchk' }).delay(1000); } _submitForm({ value }) { // Save value } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文標(biāo)題:Angular中響應(yīng)式表單的三種更新值方法詳析-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://www.ef60e0e.cn/article/spihh.html