देखें अब, आप FormBuilder
और सभी इस जटिल valiation कोणीय सामान का उपयोग करने की जरूरत नहीं है। रेपो से https://github.com/angular/angular/commit/38cb526
उदाहरण:: - (3march2016 कोणीय 2.0.8) मैं इस से अधिक विवरण डाल -:
<form (ngSubmit)="onSubmit(room)" #roomForm='ngForm' >
...
<input
id='room-capacity'
type="text"
class="form-control"
[(ngModel)]='room.capacity'
ngControl="capacity"
required
pattern="[0-9]+"
#capacity='ngForm'>
<input [ngControl]="fullName" pattern="[a-zA-Z ]*">
मैं इसे परीक्षण करने और यह काम करता है :) यहाँ मेरी कोड है
अद्यतन जून 2017
मैं बस जब मैं और अधिक अनुभव है कि कहने के लिए वर्तमान में, चाहता हूँ मैं डेटा सत्यापन के लिए हम निम्नलिखित 'सस्ते' दृष्टिकोण का उपयोग करें:
प्रमाणीकरण केवल सर्वर पक्ष पर है (बिल्कुल कोणीय में नहीं!) और यदि कुछ गलत है तो सर्वर (RESTful API) कुछ त्रुटि कोड जैसे HTTP 400 और निम्नलिखित json वस्तु प्रतिक्रिया शरीर में (जो कोणीय में मैं err
चर डाला) वापसी:
this.err = {
"capacity" : "too_small"
"filed_name" : "error_name",
"field2_name" : "other_error_name",
...
}
(यदि सर्वर वापसी सत्यापन में त्रुटि अलग स्वरूप तो आप आमतौर पर आसानी से इसे ऊपर संरचना करने के लिए अलग-अलग टैग (div/span/छोटे आदि)
<input [(ngModel)]='room.capacity' ...>
<small *ngIf="err.capacity" ...>{{ translate(err.capacity) }}</small>
जैसा कि आप देख, मैप कर सकते हैं)
HTML टेम्प्लेट में मैं का उपयोग जब वहाँ में कुछ त्रुटि है 'Capac ity 'फिर त्रुटि अनुवाद (उपयोगकर्ता भाषा के लिए) के साथ टैग दिखाई देगा। यह दृष्टिकोण निम्नलिखित फायदे हैं:
- यह बहुत सरल है
कोणीय में
- हम नहीं डबल सत्यापन कोड जो सर्वर में है (और) होना चाहिए (regexp सत्यापन के मामले यह या तो रोकने के लिए या ReDoS हमलों को मुश्किल कर सकते हैं में)
- हम रास्ते पर पूरा नियंत्रण है त्रुटि (
<small>
टैग में यहाँ egzample के रूप में) उपयोगकर्ता को दिखाया जाएगा
- क्योंकि सर्वर जवाब में हम ERROR_NAME (प्रत्यक्ष त्रुटि संदेश के बजाय) लौटने के लिए, हम आसानी से त्रुटि संदेश को बदल सकते हैं (या इसका अनुवाद) ओएनएल संशोधित करके वाई फ्रंटेंड-कोणीय कोड (या अनुवाद के साथ फाइलें)। तो उस स्थिति में हमें बैकएंड/सर्वर कोड को छूने की आवश्यकता नहीं है।
बेशक
कभी कभी (यह आवश्यक हो, तो -। जैसे retypePassword क्षेत्र है जो सर्वर के लिए कभी नहीं भेज रहा है) मैं ऊपर दृष्टिकोण का अपवाद नहीं करते और कोणीय में कुछ सत्यापन कर (लेकिन समान "this.err
" तंत्र का उपयोग त्रुटियों को दिखाने के लिए (तो मैं pattern
का उपयोग नहीं input
टैग में सीधे विशेषता बल्कि मैं कुछ घटक विधि उपयोगकर्ता के बाद इनपुट-परिवर्तन की तरह उचित घटना को बढ़ाने या बचाने के लिए) में regexp सत्यापन बनाते हैं। कदम से
स्रोत
2016-03-10 19:05:59
इस समय वहाँ यह करने के लिए कोई सीधा रास्ता नहीं है। जब तक यह बिल्कुल नहीं होता है तब तक आप अपना [कस्टम अनुरोध] (https://github.com/angular/angular/pull/5561) भूमि तक अपना स्वयं का कस्टम सत्यापनकर्ता लिख सकते हैं। –
यदि आप उस पथ पर जाते हैं तो कस्टम सत्यापन कैसे करें http://www.syntaxsuccess.com/viewarticle/forms-and-validation-in-angular-2.0 – TGH