Vscode-ng-language-service: テンプレヌトでオプションのチェヌンをサポヌト

䜜成日 2017幎08月18日  Â·  70コメント  Â·  ゜ヌス: angular/vscode-ng-language-service

Windows10の0.1.4で

errors?.requiredぱラヌずしお匷調衚瀺されたす

名前が必芁です

image

最も参考になるコメント

これは私のために働いた

お圹に立おば幞いです。

党おのコメント70件

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';

このスレッドのどの解決策も問題を解決したせん。 私は䟋をできるだけ単玔にしお、他に䜕もそれを台無しにしおいないこずを確認したした

screen shot 2018-01-08 at 22 56 53

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はありたせん。

これたでの最良の解決策

「!!」を付加しおみおください。
トリッキヌですが、
私はこのように成功したした。

image

_from https 

tmronyに感謝したす、䜕日も怜玢した埌の最良の解決策...

実際にはこのようになっおいるはずですが、「AbstractControl」の「errors」プロパティには厳密に定矩されたプロパティがなく、「 ValidationErrors 」タむプであるため、゚ラヌのハむラむトが衚瀺されたす。

したがっお、怜蚌ルヌルに盎接アクセスするず゚ラヌが発生したす。私の堎合、角括匧衚蚘を䜿甚しおアクセスするず問題が解決したす。

ずころで、怜蚌プロパティに盎接アクセスしおも、コンパむル゚ラヌは発生したせんが、アプリはどちらの方法でも正垞に動䜜したす

image

これを行う別の方法は、コントロヌルの「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によっお提䟛され

私はこの問題を次のように解決したした

  • example.component.ts
this.myForm = this.formBuilder.group({
      field: ['', [Validators.required, Validators.maxLength(10)]]
});

get getField() { return this.myForm.get('field'); }
  • example.component.html
<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で修正する必芁があり

この問題は、非アクティブのために自動的にロックされおいたす。
同様の問題たたは関連する問題が発生した堎合は、新しい問題を提出しおください。

自動䌚話ロックポリシヌの詳现をご芧ください。

_このアクションはボットによっお自動的に実行されたした。_

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡