Windows10ã®0.1.4ã§
errors?.required
ã¯ãšã©ãŒãšããŠåŒ·èª¿è¡šç€ºãããŸã
OS X 10.11.6ïŒEl CapitanïŒã§ãçºçããŸãã
OSïŒOS X 10.11.6
æ¡åŒµããŒãžã§ã³ïŒ0.1.4
VS CodeããŒãžã§ã³ïŒ1.15.1
Windows 10x64ã§ããã®åé¡ãçºçããŸãã
æ¡åŒµããŒãžã§ã³0.1.7
VSCodeããŒãžã§ã³1.15.1
ããã«ä¿®æ£ããŠãã ãã
ããã§ãåãåé¡ããããŸãã
ãšã©ãŒã¯æ¬¡ã®ãšããã§ãããèå¥åãããšã©ãŒããå®çŸ©ãããŠããŸããã ãNgModelãã«ã¯ãã®ãããªã¡ã³ããŒã¯å«ãŸããŠããŸããã
OSïŒmacOS 10.13
æ¡åŒµåïŒ0.1.7
VSã³ãŒãïŒ1.16.1
è§åºŠïŒ4.4.3
TypescriptïŒ2.5.2
åãåé¡ïŒ 解決çã¯ãããŸããïŒ
app.moduleãŸãã¯ãã©ãŒã ãååšããã³ã³ããŒãã³ãã«ã€ã³ããŒãããå¿ èŠããããŸããïŒ
@VladBozhinovskiã«ãã£ãŠèšåããã
é¢é£ããçš®é¡ïŒ https ïŒ
ãããç§ãããŸããããŸããã§ãã...
ç§ã¯åãåé¡ãæ±ããŠããŸã....解決çã¯ãããŸããïŒ
åãåé¡ã誰ããä¿®æ£ãèŠã€ããŸãããïŒ
ããã§åãåé¡ã ãŸã ã¢ã€ãã¢ã¯ãããŸããïŒ
ç§ããã®åé¡ã解決ããŸãã
ãã£ã¡ãäžç·ã
ç§ã¯äžäººã§ã¯ãªãããã§ã:)
éåžžã«å€ãã®äººããã®åé¡ãæ±ããŠããŸãã ããªããã¡ã¯ãemailïŒ.error.requiredãã®ããã«ãããé²ãããšãã§ããŸã
@ Duanthse03268ããã¯èµ€ãç·ã®ãšã©ãŒãåé€ããããšã§æ©èœããŸããããããã§ã次ã®ã³ã³ãœãŒã«ãšã©ãŒãçºçããŸããçç±ã¯äœã§ããïŒ
FoodFormComponent.html:9
ERROR TypeError: Cannot read property 'minlength' of undefined at Object.eval [as updateDirectives] (FoodFormComponent.html:10)
at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:13056) at checkAndUpdateView (core.es5.js:12236) at callViewAction
(core.es5.js:12601) at execComponentViewsAction (core.es5.js:12533) at checkAndUpdateView (core.es5.js:12242) at callViewAction
(core.es5.js:12601) at execComponentViewsAction (core.es5.js:12533) at checkAndUpdateView (core.es5.js:12242) at callWithDebugContext
(core.es5.js:13456)
å¿
ãã€ã³ããŒãããŠãã ãã
import {FormsModuleãValidators} from '@ angular / forms';
ãã®ã¹ã¬ããã®ã©ã®è§£æ±ºçãåé¡ã解決ããŸããã ç§ã¯äŸãã§ããã ãåçŽã«ããŠãä»ã«äœããããå°ç¡ãã«ããŠããªãããšã確èªããŸããïŒ
FormModuleãšValidatorsã¯@angular / formsããã€ã³ããŒããããŸããã ãŸãã @ Duanthse03268ã§ãã®ãœãªã¥ãŒã·ã§ã³ããã¹ãããŸããããèµ€ãç·ã®åé¡ã解決ãããªãã ãã§ãªããmyFieldã®ç¶æ ãå€åãããšãã«ã³ã³ãœãŒã«ã§ãšã©ãŒãçºçããŸãïŒTypeErrorïŒnullã®ãããã㣠'required'ãèªã¿åããŸããïŒã ãïŒã ããšã©ãŒãã®åŸã
ç§ã®å®è£ ã¯ãã©ãŠã¶ãŒã§ãšã©ãŒãªãã§åäœããŸããããšãã£ã¿ãŒïŒVSCodeïŒã§ïŒããããæ£ãããªãïŒèµ€ãç·ãä¿æããŸãã åé¡ã®ãã¡ã€ã«ã®èŠç¹ïŒä»ã®ãã¹ãŠã¯ãåã«ãng new ...ãã§åçŸã§ããŸãïŒïŒ
app.module.ts
app.component.ts
app.component.html
ããŒãžã§ã³ïŒ
æ¡åŒµåïŒ0.1.7
VSCodeïŒ1.19.1
Angular CLIïŒ1.6.3
ããŒãïŒ9.2.1
OSïŒmacOS 10.12.6
è§åºŠïŒ5.1.3
ChromeïŒ63.0.3239.84
'myfieldïŒ.error.required'ã䜿çšããããšããªãã£ãã®ã¯ãªãã§ããã
以åã®ã³ã¡ã³ãã§æžããããã«ãç§ã¯ãããè©ŠããŸããïŒãèµ€ãç·ã®åé¡ã解決ããªãã ãã§ãªããmyFieldã®ç¶æ ãå€ãããšã³ã³ãœãŒã«ã§ãšã©ãŒãçºçããŸãïŒTypeErrorïŒnullã®ãããã㣠'required'ãèªã¿åãããšãã§ããŸããïŒãã
ãããã£ãŠã詳ãã説æãããšããmyFieldïŒ.errors.requiredãã¯æ©èœãããäžèšã®ãšã©ãŒã¡ãã»ãŒãžãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã ãïŒã ãã®ã³ãŒãããšã©ãŒã¡ãã»ãŒãžãªãã§ãã©ãŠã¶ã§åäœãããã«ã¯ãããšã©ãŒãã®åŸã«èšè¿°ããå¿ èŠããããŸããããšãã£ã¿ã®èµ€ãç·ãæ£ãããªããšããå ã®åé¡ã¯è§£æ±ºãããŸããã
èµ€ãç·ããŸã æ®ã£ãŠããã®ã§ãããã¯éåžžã«è¿·æã§ãããæ©èœã¯æ©èœããŸãã æ瀺ããã解決çãæ©èœãããäž¡æ¹ã®åœ¢åŒãè©ŠããŠãåé¡ã解決ããªããããjoonashakã«åæããŸãã
ããã¯ç§ã®ããã«åããïŒ
ã圹ã«ç«ãŠã°å¹žãã§ãã
åé¿çã®ã¿:(
IntelliJã¯ç§ã«åããšã©ãŒãã¹ããŒããŸãã ãã ããå®è£ ã¯ãã©ãŠã¶ã®ãšã©ãŒã§ãæ©èœããŸãã @Ahnsetã«ããåé¿çã¯ç§ã®ããã«åããã ãã®æ§æãšã¯äœãããããŠçŸåšã©ã®ããã«æ©èœããŠããã®ãç¥ãããã§ããïŒ
'any'ãšããŠå®çŸ©ãããŠããããããã£ãåç §ãããã³ã«ããã®ãšã©ãŒã衚瀺ãããããšãããããŸããã ãã1ã€ã®åé¿çã¯ããã©ã±ããããããã£ã¢ãããŒã·ã§ã³clientFirstNameïŒ.errors ['required']ã䜿çšããããšã§ãããããããªãã°ãããŠããŸãã
ææªã®å Žåãvscodeã®ææ°ã®æŽæ°ã«ãããç§ã®ãã¡ã€ã«ããªãŒã¯ã¯ãªã¹ãã¹ããªãŒã®ããã«ãªããŸããïŒchristmas_treeïŒ
@adickenscheidtã¯åé¿çãããããšãããããŸãã ããŸãæ©èœããä»ã®ãšããã°ãããŠããããšã«åæããŸãã
Angular LanguageServiceãåé€ããŸãã...
@ Duanthse03268é¢æ°ãæ©èœããŸãïŒ ããããšãã
@adickenscheidt
ãã®ãœãªã¥ãŒã·ã§ã³ãç§ã®ããã«åããŠãããŠããããšã
åºæ¥ãã @ Duanthse03268ã«æè¬ã
@ Duanthse03268é¢æ°ãæ©èœããŸãïŒ ããããããã¯æ£ç¢ºã«ã¯ã©ãããæå³ã§ããïŒ
ãã¹ãããããªããžã§ã¯ãããããã£ã§ã¯æ©èœããŸãã<mat-select [(ngModel)]="object?.nestedObject?.property" name="property" #property="ngModel">
object?.object?.property
è¶
ã¯ãŒã«ãªè§£æãšã©ãŒãçºçãã
ç§ã¯ããã䜿ããŸãã éããåäœããŸãã
name?.errors && name?.errors['required']
email.errors ['required']ã¯ç§ã®ããã«åãã
@ guignol1981ãœãªã¥ãŒã·ã§ã³ã¯ç§ã®ããã«åããã
ããã䜿çšããããšã¯ç§ã®ããã«åããïŒ
èŠçŽ åã®ã¿ãå¿ èŠã§ããïŒ ããŒã¯ã ããã»ã©éãã§ã¯ãããŸããç§ã¯åãåé¡ãæ±ããŠããŸãããææ¡ããã解決çã®ã©ããããŸããããŸããã§ããïŒ
"formïŒ.getïŒ 'name'ïŒãerrors.required"
"formïŒ.getïŒ 'name'ïŒãerrorsã['required']"
"formïŒ.getïŒ 'name'ïŒãerrorsïŒ.required"
ããã«ã¡ã¯ããã®ããã«è©ŠããŠã¿ãŠãã ããã
Form.hasErrorïŒ 'å¿
é 'ïŒ;
ããã¯ç§ã®ããã«åããã ããããšã@antonheck
ããã€ãã®åé¿çãããããããããããŸããŸãªç¶æ³ã«é©ããŠããŸãã ããããããã¯åé¡ã§ã¯ãããŸããã ç§ãæžãããã®ãæåããæ£ããã£ããšããIDEæ¡åŒµæ©èœããªã ããããã ãã«ãéããããããŒãªæ§æãå«ããŠãã³ãŒããå¥ã®æ¹æ³ã§æžãå¿ èŠã¯ãããŸããã
ç§ã¯ãã®åæ§ã®ã³ãŒãã§ãŸã£ããåãåé¡ãšã¡ãã»ãŒãžãæã£ãŠããŸãïŒ
class MyComponent {
form: FormGroup;
}
ãã³ãã¬ãŒãã«ãã®ãããªè¡ããããŸãïŒ
<app-errors [control]="form.controls.email">
ãšã©ãŒã¡ãã»ãŒãž ïŒ
èå¥åãemailããå®çŸ©ãããŠããŸããã '__type'ã«ã¯ãã®ãããªã¡ã³ããŒã¯å«ãŸããŠããŸãã
åé¡ã¯æ¬¡ã®ãããªã¿ã€ãã®ãã£ãŒã«ãã«ãã£ãŠåŒãèµ·ããããŸãïŒãã¡ããAbstractControlãŸãã¯ä»ã®äœãã§çºçããŸãïŒïŒ
{ [key: string]: AbstractControl; };
ãã®ã¡ãã»ãŒãžã¯VisualStudio CodeïŒWindowsïŒãšAngular Language Servicesã«ãããŸããã ng lint
ã¯ãããŸããã
ãããŸã§ã®æè¯ã®è§£æ±ºçïŒ
ã!!ããä»å ããŠã¿ãŠãã ããã
ããªãããŒã§ããã
ç§ã¯ãã®ããã«æåããŸããã
_fromïŒ https ïŒ
tmronyã«æè¬ããŸããäœæ¥ãæ€çŽ¢ããåŸã®æè¯ã®è§£æ±ºç...
å®éã«ã¯ãã®ããã«ãªã£ãŠããã¯ãã§ããããAbstractControlãã®ãerrorsãããããã£ã«ã¯å³å¯ã«å®çŸ©ãããããããã£ããªããã ValidationErrors ãã¿ã€ãã§ããããããšã©ãŒã®ãã€ã©ã€ãã衚瀺ãããŸãã
ãããã£ãŠãæ€èšŒã«ãŒã«ã«çŽæ¥ã¢ã¯ã»ã¹ãããšãšã©ãŒãçºçããŸããç§ã®å Žåãè§æ¬åŒ§è¡šèšã䜿çšããŠã¢ã¯ã»ã¹ãããšåé¡ã解決ããŸãã
ïŒãšããã§ãæ€èšŒããããã£ã«çŽæ¥ã¢ã¯ã»ã¹ããŠããã³ã³ãã€ã«ãšã©ãŒã¯çºçããŸããããã¢ããªã¯ã©ã¡ãã®æ¹æ³ã§ãæ£åžžã«åäœããŸãïŒ
ãããè¡ãå¥ã®æ¹æ³ã¯ãã³ã³ãããŒã«ã®ãhasErrorãã¡ãœããã䜿çšããããšã§ãã
<span *ngIf="(firstName.dirty || firstName.touched) && firstName.hasError('required')">First name is required.</span>
@ boban984ãœãªã¥ãŒã·ã§ã³ãæ©èœããŸãã...ã
@adickenscheidtãœãªã¥ãŒã·ã§ã³ã¯ç§ã®ããã«åããïŒ ããããšã
"price.errors ['required']"->åäœããŸãã
"!! price.errors.required"->åäœããŸãã
ãfullnameïŒ.errorsïŒ.requiredããæ©èœããããããpriceïŒ.errorsïŒ.requiredããæ©èœããã¯ãã§ãã
"price.errors ['required']"->åäœããŸãã
ããã¯ã³ã³ãã€ã©ã®ãèå¥åãå®çŸ©ãããŠããŸããããããªã¬ãŒããŸãããããšã©ãŒãªããžã§ã¯ããnullã®å Žåãã³ã³ãœãŒã«ã§ãšã©ãŒãçºçãããããé©åãªè§£æ±ºçã§ã¯ãããŸããã
@ boban984
ãããåè
ã®è§£æ±ºçãšèª¬æã§ãã
ããã§èª¬æããhasError()
ã¡ãœãããèŠã€ããŠããããã£ãã§ããããã¯ç¢ºãã«ããã³ãã¬ãŒãã®æå³ãæ¡ä»¶ä»ãã§ç€ºãæãæ確ãªæ¹æ³ã§ãããä»åŸã¯æä»çã«äœ¿çšããããã«åªãããšæããŸãã
ããã...誰ãåé¡ã®æ ¹æ¬åå ã«åãçµãã§ããããããã¯1幎ã»ã©ã®éèšèªãµãŒãã¹ã®åé¡ã«ãªã£ãŠããŸãã errors
ããããã£ã«ã¯ããŒã€ã³ããã¯ã¹ã·ã°ããã£ïŒ [key: string]: any
ïŒããããŸããããã¯ãTSã³ãŒãã§ã¯ãèšå®ããstrict-modeãã©ã°ã«é¢ä¿ãªããã¹ããŒãã¡ã³ãmyControl.errors.anythingYouLike
ãã¯ãªãŒã³ã«ã³ã³ãã€ã«ãããããšãæå³ããŸãã ã ãã®ãããªã€ã³ããã¯ã¹çœ²åãæã€ããšã®å
šäœçãªãã€ã³ãã¯ãå®è¡æã«ä»»æã®ããããã£ãäœæãããããè¡šèšãŸãã¯ã€ã³ããã¯ã¹è¡šèšã®ããããã§ãããã«ã¢ã¯ã»ã¹ã§ããããã«ããããšã§ãããããããã¯æ£ããã§ãã èšèªãµãŒãã¹ã§ã¯æ·»åè¡šèšãèš±å¯ãããŠããããã control?.errors['required']
æ©èœããŸããããããè¡šèšãæ£ãããªãããšã瀺ããã©ã°ãç«ãŠãããŸããããã¯ãšã©ãŒã§ãã
3ã€ã®è§£æ±ºçïŒ
<span *ngIf=" username.errors['email']">must be email</span>
<span *ngIf="!!username?.errors.email">must be email</span>
<span *ngIf="username.hasError('email')">must be email</span>
ç§ã¯3çªç®ã«è¯ãã®ã奜ãã§ã
@ boban984çŽ æŽããã解決çãšèª¬æ
thnksãç§ã®ããã«åãïŒ ððŒ
ç§ã¯ã³ã³ãœãŒã«ã§ãšã©ãŒã衚瀺ããã®ãå«ãã§ãð¬
ããã«ã¡ã¯ããã®ããã«è©ŠããŠã¿ãŠãã ããã
Form.hasErrorïŒ 'å¿ é 'ïŒ;
ããã¯æãæŽç·Žããããœãªã¥ãŒã·ã§ã³ã§ãããå®éã«ã¯ãã¹ãŠã®å Žåã«æ©èœããŸãïŒmyForm.hasErrorïŒ 'required'ã 'myField'ïŒã
ããããšã@antonheck
ããã«ã¡ã¯ããã®ããã«è©ŠããŠã¿ãŠãã ããã
Form.hasErrorïŒ 'å¿ é 'ïŒ;
ããã¯æãæŽç·Žããããœãªã¥ãŒã·ã§ã³ã§ãããå®éã«ã¯ãã¹ãŠã®å Žåã«æ©èœããŸãïŒmyForm.hasErrorïŒ 'required'ã 'myField'ïŒã
ããã¯æ©èœããŸãããåçŽãã«åºã¥ãæè¯ã®è§£æ±ºçã¯@ boban984ã«ãã£ãŠæäŸãã
ç§ã¯ãã®åé¡ã次ã®ããã«è§£æ±ºããŸããïŒ
this.myForm = this.formBuilder.group({
field: ['', [Validators.required, Validators.maxLength(10)]]
});
get getField() { return this.myForm.get('field'); }
<div *ngIf="getField.errors" class="invalid-feedback">
<div *ngIf="getField.hasError('required')"> Text required </div>
<div *ngIf="getField.hasError('maxlength')"> Text maxLength </div>
</div>
ã圹ã«ç«ãŠã°å¹žãã§ãã
å®ç§ãª@bePericonããã¯ç§ã®ããã«åããŸãïŒ
ããããšãïŒ
<input type="text" formControlName="name" class="form-control" placeholder="Full name">
<div *ngIf="submitted && f['name'].errors" class="alert alert-danger">
<div *ngIf="f['name'].errors.required">Full Name is required</div>
</div>
ããã¯Angular7ã§ç§ã®ããã«åãã
ããã§ã2幎åŸãããã¯ä¿®æ£ãããŠããŸãããïŒ ð€£
é¢é£ïŒ https ïŒ
ããã§ã2幎åŸãããã¯ä¿®æ£ãããŠããŸãããïŒ ð€£
é¢é£ïŒïŒ110
ããã¯ãã°ã§ã¯ãããŸãããããã¯ãŸãã«ãããæ©èœããã¯ãã®æ¹æ³ã§ã
ãããæåŸ ãããæ©èœã§ããå Žåãããã¥ã¡ã³ããæŽæ°ã§ããŸããïŒ ïŒ1ã€ã®äŸã«ã€ããŠã¯ãããåç §ããŠãã ããïŒã
ããã¯ã ngModel
ã®çã®ããããã£ã¢ã¯ã»ãµãŒã䜿çšã§ããããšãæ確ã«æšæž¬ããŸããããã®ã¹ã¬ããã¯ãããã絶察ã«äœ¿çšã§ããªãããšã確ç«ããŠããŸãã
å®éã«ä¿®æ£ãããŠããŸããïŒ äœå¹Žãåã«hasErrorã«åãæ¿ããŸããããçŸåšããšã©ãŒãåçŸããããšããŠå€±æããŠããŸãã myControl.errors.maxlength
ã¯ãç§ã«ãšã£ãŠèµ€ãæ³¢ç·ãçæããŸããã ããã¯ãã©ã€ãã©ãªã®v8.1.xã䜿çšããèšèªãµãŒãã¹æ¡åŒµæ©èœ0.801.1ã䜿çšããå Žåã«åœ¹ç«ã¡ãŸãã
@ thw0rtedãªã®ã§ã myControl.errors.required
ãš.pattern
ã䜿çšããŠåãã¹ããããšãïŒå
¥åã¿ã°ã®required
å±æ§ãèŠéããããããã倧ããªå€±æãçºçããŠããŸããïŒãããªãããŸããããŸãã
Required
ã»ãšãã©æ©èœããŸããããããã¢ããããããã€ãã®å¥åŠãªãšã©ãŒãããïŒãã£ããã£ã«å€±æããæ®å¿µãªããäžè²«æ§ããããŸããïŒããã¿ãŒã³ãééã£ãŠãããæŽæ°ãããŠããªãããã«èŠããå Žåã«pattern
çºçããŸããã¿ãŒã³ãæ£ãããšãã
ãŸããç§ã¯åãvsCodeèšèªæ¡åŒµãæã£ãŠããŸãããããã§ãå¥åŠãªããšã«æ³¢ç·ãèŠãããŸãã
ä»ã®ãšãã.hasError
ãœãªã¥ãŒã·ã§ã³ã䜿ãç¶ããã€ããã§ãããå°ãªããšããããããæ確ã§ãã¹ããã©ã¯ãã£ã¹ãšããŠäœ¿çšããããã«ãããã¥ã¡ã³ããæŽæ°ããããšããå§ãããŸãã
'any'ãšããŠå®çŸ©ãããŠããããããã£ãåç §ãããã³ã«ããã®ãšã©ãŒã衚瀺ãããããšãããããŸããã ãã1ã€ã®åé¿çã¯ããã©ã±ããããããã£ã¢ãããŒã·ã§ã³clientFirstNameïŒ.errors ['required']ã䜿çšããããšã§ãããããããªãã°ãããŠããŸãã
ããã«ããããšã©ãŒãåé€ãããŸããã åèãŸã§ã«ããšã©ãŒã®æŠèŠã瀺ãããŠããŠãã³ãŒãã¯æ©èœããŸãããã³ãŒãã«èµ€ãç·ã衚瀺ãããã®ã¯å¥œãã§ã¯ãããŸããã
ã¯ããæååãšããŠããŒãå ¥åãããšãèµ€ãç·ãåé€ãããŸãã
ãã ããããã«ãããæ£ããã¹ãã«ããªãŒãã³ã³ããªãŒããªã©ã®æ©èœã倱ãããŸãã
hasErrorïŒïŒã®äœ¿çšã«å ããŠããã©ãŒã ã®åã³ã³ãããŒã«ã«ã¢ã¯ã»ã¹ããã«ã¯ããããã¢ã¯ã»ã¹ã§ã¯ãªãgetïŒïŒã䜿çšããå¿ èŠããããŸãã äŸãã°
class MyComponent { form: FormGroup; }
ãã³ãã¬ãŒãã«ãã®ãããªè¡ããããŸãïŒ
<app-errors [control]="form.controls.email">
ãšã©ãŒã¡ãã»ãŒãž ïŒ
èå¥åãemailããå®çŸ©ãããŠããŸããã '__type'ã«ã¯ãã®ãããªã¡ã³ããŒã¯å«ãŸããŠããŸãã
解決çã¯æ¬¡ã®ããã«ãªããŸãã
<app-errors [control]="form.get('email')">
åãåé¡ã
f.email.errors.email.requiredã倱æãã
!! f.email.errors.email.requiredã倱æãã
f.emailïŒ.errors.email.required倱æ
fïŒ.emailïŒ.errors.email.required倱æ
f.email.errorã['required']倱æ
f.emailïŒ.errorã['required ']倱æ
ããã¯ç§ã®ããã«åããïŒ
f ['email']ãerrors.required
https://github.com/angular/angular/pull/33884ã§ä¿®æ£ããå¿ èŠããã
ãã®åé¡ã¯ãéã¢ã¯ãã£ãã®ããã«èªåçã«ããã¯ãããŠããŸãã
åæ§ã®åé¡ãŸãã¯é¢é£ããåé¡ãçºçããå Žåã¯ãæ°ããåé¡ãæåºããŠãã ããã
èªåäŒè©±ããã¯ããªã·ãŒã®è©³çŽ°ãã芧ãã ããã
_ãã®ã¢ã¯ã·ã§ã³ã¯ãããã«ãã£ãŠèªåçã«å®è¡ãããŸããã_
æãåèã«ãªãã³ã¡ã³ã
ããã¯ç§ã®ããã«åããïŒ
ã圹ã«ç«ãŠã°å¹žãã§ãã