Vscode-ng-language-service: دعم الأنواع المفهرسة

تم إنشاؤها على ٧ يوليو ٢٠١٧  ·  32تعليقات  ·  مصدر: angular/vscode-ng-language-service

عند استخدام النماذج التفاعلية ، يظهر الخطأ في العنوان في قالب HTML.


رجاء ادخل اسما صحيحا.


تم وضع خط تحت "formRegister.controls.company.invalid && formRegister.controls.company.touched" كخطأ ولكن التطبيق يعمل بشكل جيد.

bug

التعليق الأكثر فائدة

أواجه أيضًا هذه المشكلة مع النماذج التفاعلية.

الحل المؤقت هو الوصول إلى الخاصية باستخدام تعبير موصل ملائم قوسين.

formRegister.controls['company'].invalid

ال 32 كومينتر

@ virgil-av هل يمكنك إنشاء مستودع يقوم بإعادة إنتاج هذه المشكلة؟

لدينا نفس المشكلة مع نوع الاتحاد. مثل

الساعة العامة: TimeSpan | خيط؛

خطأ:
لم يتم تعريف المعرف "hhMM". "لا يحتوي على مثل هذا العضو

hhMM هو عضو صالح في TimeSpan ولكن يبدو أنه يتم التعامل مع الساعة مثل أي ؛ (

wupaz أنت كمثال متوقع لأن السلسلة ليست hhMM كعضو ونوع الاتحاد له فقط الأعضاء المشتركين في الأنواع المكونة.

يبلغ TypeScript عن خطأ مشابه

أواجه أيضًا هذه المشكلة مع النماذج التفاعلية.

الحل المؤقت هو الوصول إلى الخاصية باستخدام تعبير موصل ملائم قوسين.

formRegister.controls['company'].invalid

أيضا الحصول على هذا في الواقع. أعتقد أن هذا كان يمثل مشكلة في TS أيضًا ولكن يبدو أنه يعمل الآن بالنسبة لي. على الأقل في TS 2.4.0 و Angular 4.3.0:

إليك تعريف النوع لخاصية FormGroup.controls: https://github.com/angular/angular/blob/master/packages/forms/src/model.ts#L832

(property) FormGroup.controls: {
    [key: string]: AbstractControl;
}

كلاهما يعمل في TS بالنسبة لي لكن تدوين النقطة يشكو داخل خدمة اللغة:

form.controls['birthday']
form.controls.birthday

intellix نفسه هنا

نفس الشيء في v2.5.2 .

لدي نفس المشكلة في tsc v2.5.2 كما قال الأصدقاء

هل يمكنك إنشاء مستودع يقوم بإعادة إنتاج هذه المشكلة؟

chuckjaz يمكنني إنشاء شيء أفضل: لا يوجد مستودع.

لأنني اختبرت ووجدت أن هذه المشكلة لا تتعلق بكود المصدر أو حزم npm على الإطلاق. بدأت أواجه هذه المشكلة ثم اختبرت تسجيل الدخول كمستخدم مختلف ، وبدأت رمز الاستوديو المرئي في نفس الدليل ، ثم لم أحصل على الخطأ في هذا المحرر.

error_screenshot

هذا يتوافق أيضًا مع أن الخطأ يظهر فقط في المحرر ولا يشكو المترجم عند البناء.

لذلك ، من الواضح أن هناك فرقًا لكل مستخدم. ثم اختبرت إزالة دليل التكوين ، واختفت المشكلة. عند نقل الدليل القديم مرة أخرى ، تظهر المشكلة مرة أخرى.

$ mv  ~/.config/{,old.}Code
$ code .
$ mv  ~/.config/{,new.}Code
$ mv  ~/.config/{old.,}Code
$ code .

لذا فقد دخلت بعض cruft في دليل التكوين الذي يقوم بتشغيل هذا (بعض ذاكرة التخزين المؤقت ستكون تخميني). عند تحريك الماوس فوق valid من name.valid مباشرة بعد بدء تشغيل المحرر ، يظهر تلميح أداة "Loading ..." لعدة ثوان قبل الاختفاء ويحدث الخطأ. في المرة الثانية وما بعدها ، يتم عرض الخطأ على الفور عند التمرير.

لقد تتبعت اختلاف المستخدم ، وهو عبارة عن قسط من امتداد vscode Angular.ng-template الإصدار 0.1.7. ويمكنني الآن أيضًا توفير مستودع يقوم بإعادة إنتاج هذه المشكلة:

  1. استنساخ https://github.com/colinskow/angular-electron-dream-starter
  2. ضع الرقعة المرفقة.
  3. افتح src / app / hero-form.component.html.
  4. أ) عند تثبيت Angular.ng-template ، ستحصل name.valid وأربعة معرفات أخرى على تسطير باللون الأحمر (وأخطاء تلميح الأدوات [Angular] Identifier 'valid' is not defined. 'NgModel' does not contain such a member ).
    ب) مع عدم تثبيت Angular.ng-template أو تعطيله ، لا تحدث أخطاء.

التصحيح نسبي لـ v7.0.0 ، لكنني قمت أيضًا باختباره مقابل الالتزام bd5ad5f0 (Feature / ng2 rc5 (# 875)) من 2016-08-21 وهو أول التزام يحتوي على src / app / app.module .ts ، وحدث الخطأ هناك أيضًا ، لذلك أفترض أن هذه مشكلة لجميع إصدارات هذا الريبو.

نظرًا لأن angular-electron-dream-starter عبارة عن مفترق من https://github.com/AngularClass/angular-starter ، فقد اختبرت التصحيح في هذا الريبو أيضًا ، وهناك لا تحدث المشكلة ولكن بدلاً من ذلك يحتوي التلميح على معلومات صحيحة :

no error

تم اختباره في الأصل على الإصدار 1.17.2 من vscode (الالتزام b813d129). بعد التحديث إلى الإصدار 1.8.0 (الالتزام dcee22027) تكون النتيجة واحدة.


نظرًا لمعالجة المرفقات الغبية تمامًا من Github ، فإن التصحيح بترميز base64 هنا:

RnJvbSAyYzgxMTJmYzJhM2I2M2FkZjVmZjA0MDQ3NTcyNjAyMjc2ZWMwYmZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E / SD1DMz1BNWtvbj0yMEw9QzM9Qjh2ZGFsPz0g
PGtvZGVAZGVua3VsZS5ubz4KRGF0ZTogRnJpLCAxNyBOb3YgMjAxNyAyMDozMDoyMCArMDEwMApT
dWJqZWN0OiBbUEFUQ0hdIEltcG9ydCBvZiBleGFtcGxlIGZyb20gaHR0cHM6Ly9hbmd1bGFyLmlv
L2d1aWRlL2Zvcm1zCgotLS0KIHNyYy9hcHAvYXBwLmNvbXBvbmVudC5odG1sICAgICAgIHwgNDAg
KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYXBwL2FwcC5tb2R1bGUudHMgICAgICAg
ICAgICB8ICA1ICsrKy0KIHNyYy9hcHAvaGVyby1mb3JtLmNvbXBvbmVudC5odG1sIHwgNTggKysr
كيسركيسركيسركيسركيسركيسركيسركيسركيسركيسركيسركيسركوكوجك 3 ججل 2 فوكك 9 زكسجفل دبليو زف سم 0 يو
Y29tcG9uZW50LnRzICAgfCAyMSArKysrKysrKysrKysrKysKIHNyYy9hcHAvaGVyby50cyAgICAg
ICAgICAgICAgICAgIHwgIDkgKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9u
cygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hcHAvYXBwLmNvbXBv
bmVudC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FwcC9oZXJvLWZvcm0uY29tcG9uZW50
Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYXBwL2hlcm8tZm9ybS5jb21wb25lbnQudHMK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYXBwL2hlcm8udHMKCmRpZmYgLS1naXQgYS9zcmMvYXBw
L2FwcC5jb21wb25lbnQuaHRtbCBiL3NyYy9hcHAvYXBwLmNvbXBvbmVudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YWE1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9z
cmMvYXBwL2FwcC5jb21wb25lbnQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8bmF2PgorCTxhIFty
b3V0ZXJMaW5rXT0iIFsnLi8nXSAiCisJCXJvdXRlckxpbmtBY3RpdmU9ImFjdGl2ZSIgW3JvdXRl
ckxpbmtBY3RpdmVPcHRpb25zXT0gIntleGFjdDogdHJ1ZX0iPgorCQlJbmRleAorCTwvYT4KKwk8
YSBbcm91dGVyTGlua109IiBbJy4vaG9tZSddICIKKwkJcm91dGVyTGlua0FjdGl2ZT0iYWN0aXZl
IiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPSAie2V4YWN0OiB0cnVlfSI + CisJCUhvbWUKKwk8
L2E + CisJPGEgW3JvdXRlckxpbmtdPSIgWycuL2RldGFpbCddICIKKwkJcm91dGVyTGlua0FjdGl2
ZT0iYWN0aXZlIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPSAie2V4YWN0OiB0cnVlfSI + CisJ
CURldGFpbAorCTwvYT4KKwk8YSBbcm91dGVyTGlua109IiBbJy4vYmFycmVsJ10gIgorCQlyb3V0
ZXJMaW5rQWN0aXZlPSJhY3RpdmUiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109ICJ7ZXhhY3Q6
IHRydWV9Ij4KKwkJQmFycmVsCisJPC9hPgorCTxhIFtyb3V0ZXJMaW5rXT0iIFsnLi9hYm91dCdd
ICIKKwkJcm91dGVyTGlua0FjdGl2ZT0iYWN0aXZlIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNd
PSAie2V4YWN0OiB0cnVlfSI + CisJCUFib3V0CisJPC9hPgorPC9uYXY + CisKKzxtYWluPgorCTxh
cHAtaGVyby1mb3JtPjwvYXBwLWhlcm8tZm9ybT4KKwk8cm91dGVyLW91dGxldD48L3JvdXRlci1v
dXRsZXQ + Cis8L21haW4 + CisKKzxwcmUgY2xhc3M9ImFwcC1zdGF0ZSI + dGhpcy5zdGF0ZSQgPSB7
eyBzdGF0ZSQgfCBhc3luYyB8IGpzb24gfX08L3ByZT4KKworPGZvb3Rlcj4KKWk8c3Bhbj4KKwkJ
QW5ndWxhciBFbGVjdHJvbiBEcmVhbSBTdGFydGVyIGJ5IDxhIChjbGljayk9Im9wZW5VUkwodXJs
KSIgaHJlZj0iIyI + QENvbGluU2tvdzwvYT4KKwk8L3NwYW4 + CisJPGRpdj4KKwkJPGEgW2hyZWZd
PSJ1cmwiPgorCQkJPGltZyBbc3JjXT0iYW5ndWxhcmNsYXNzTG9nbyIgd2lkdGg9IjI1JSI + CisJ
CTwvYT4KKwk8L2Rpdj4KKzwvZm9vdGVyPgpkaWZmIC0tZ2l0IGEvc3JjL2FwcC9hcHAubW9kdWxl
LnRzIGIvc3JjL2FwcC9hcHAubW9kdWxlLnRzCmluZGV4IGZlYzI0NTcuLjFjNjEyZWIgMTAwNjQ0
Ci0tLSBhL3NyYy9hcHAvYXBwLm1vZHVsZS50cworKysgYi9zcmMvYXBwL2FwcC5tb2R1bGUudHMK
QEAgLTc3LDYgKzc3LDggQEAgaWYgKEVOViA9PT0gJ2RldmVsb3BtZW50JykgewogICBDT05ESVRJ
T05BTF9JTVBPUlRTLnB1c2goU3RvcmVNb2R1bGUuZm9yUm9vdChyZWR1Y2VycywgeyBtZXRhUmVk
dWNlcnMgfSkpOwogfQogCitpbXBvcnQgeyBIZXJvRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vaGVy
عن طريق 1mb3JtLmNvbXBvbmVudCc7CisKIC8qKgogICogYEFwcE1vZHVsZWAgaXMgdGhlIG1haW4gZW50
cnkgcG9pbnQgaW50byBBbmd1bGFyMidzIGJvb3RzdHJhcGluZyBwcm9jZXNzCiAgKi8KQEAgLTg3
LDcgKzg5LDggQEAgaWYgKEVOViA9PT0gJ2RldmVsb3BtZW50JykgewogICAgIEFib3V0Q29tcG9u
ZW50LAogICAgIEhvbWVDb21wb25lbnQsCiAgICAgTm9Db250ZW50Q29tcG9uZW50LAotICAgIFhM
YXJnZURpcmVjdGl2ZQorICAgIFhMYXJnZURpcmVjdGl2ZSwKKyAgICBIZXJvRm9ybUNvbXBvbmVu
dCwKICAgXSwKICAgaW1wb3J0czogWyAvLyBpbXBvcnQgQW5ndWxhcidzIG1vZHVsZXMKICAgICBC
cm93c2VyTW9kdWxlLApkaWZmIC0tZ2l0IGEvc3JjL2FwcC9oZXJvLWZvcm0uY29tcG9uZW50Lmh0
bWwgYi9zcmMvYXBwL2hlcm8tZm9ybS5jb21wb25lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wZM2YjgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2FwcC9oZXJv
LWZvcm0uY29tcG9uZW50Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorICAgIDxkaXYgY2xhc3M9ImNv
bnRhaW5lciI + CisgICAgICA8ZGl2IFtoaWRkZW5dPSJzdWJtaXR0ZWQiPgorICAgICAgICA8aDE +
SGVybyBGb3JtPC9oMT4KKyAgICAgICAgPGZvcm0gKG5nU3VibWl0KT0ib25TdWJtaXQoKSIgI2hl
cm9Gb3JtPSJuZ0Zvcm0iPgorICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgorICAg
ICAgICAgICAgPGxhYmVsIGZvcj0ibmFtZSI + TmFtZTwvbGFiZWw + CisgICAgICAgICAgICA8aW5w
dXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9Im5hbWUiCisgICAgICAgICAg
ICAgICAgICAgcmVxdWlyZWQKKyAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT0ibW9kZWwu
bmFtZSIgbmFtZT0ibmFtZSIKKyAgICAgICAgICAgICAgICAgICAjbmFtZT0ibmdNb2RlbCI + Cisg
ICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPSJuYW1lLnZhbGlkIHx8IG5hbWUucHJpc3RpbmUiCisg
ICAgICAgICAgICAgICAgIGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPgorICAgICAgICAgICAg
ICBOYW1lIGlzIHJlcXVpcmVkCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8L2Rpdj4K
KyAgICAgCisgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI + CisgICAgICAgICAgICA8
bGFiZWwgZm9yPSJhbHRlckVnbyI + QWx0ZXIgRWdvPC9sYWJlbD4KKyAgICAgICAgICAgIDxpbnB1
dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iYWx0ZXJFZ28iCisgICAgICAg
ICAgICAgICAgICAgWyhuZ01vZGVsKV09Im1vZGVsLmFsdGVyRWdvIiBuYW1lPSJhbHRlckVnbyI +
CisgICAgICAgICAgPC9kaXY + CisgICAgIAorICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3Jv
dXAiPgorICAgICAgICAgICAgPGxhYmVsIGZvcj0icG93ZXIiPkhlcm8gUG93ZXI8L2xhYmVsPgor
ICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0icG93ZXIiCisgICAg
ICAgICAgICAgICAgICAgIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgIFsobmdNb2RlbCld
PSJtb2RlbC5wb3dlciIgbmFtZT0icG93ZXIiCisgICAgICAgICAgICAgICAgICNwb3dlcj0i
bmdNb2RlbCI + CisgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPSJsZXQgcG93IG9mIHBvd2Vy
cyIgW3ZhbHVlXT0icG93Ij57e3Bvd319PC9vcHRpb24 + CisgICAgICAgICAgICA8L3NlbGVjdD4K
KyAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09InBvd2VyLnZhbGlkIHx8IHBvd2VyLnByaXN0aW5l
IiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIj4KKyAgICAgICAgICAgICAgUG93ZXIgaXMgcmVx
dWlyZWQKKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDwvZGl2PgorICAgICAKKyAgICAg
ICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyIgW2Rpc2Fi
bGVkXT0iIWhlcm9Gb3JtLmZvcm0udmFsaWQiPlN1Ym1pdDwvYnV0dG9uPgorICAgICAgICAgIDxi
dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiAoY2xpY2spPSJuZXdI
ZXJvKCk7IGhlcm9Gb3JtLnJlc2V0KCkiPk5ldyBIZXJvPC9idXR0b24 + CisgICAgICAgIDwvZm9y
bT4KKyAgICAgIDwvZGl2PgorICAgICAKKyAgICAgIDxkaXYgW2hpZGRlbl09IiFzdWJtaXR0ZWQi
PgorICAgICAgICA8aDI + WW91IHN1Ym1pdHRlZCB0aGUgZm9sbG93aW5nOjwvaDI + CisgICAgICAg
IDxkaXYgY2xhc3M9InJvdyI + CisgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTMiPk5hbWU8
L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtOSAgcHVsbC1sZWZ0Ij57eyBtb2Rl
bC5uYW1lIH19PC9kaXY + CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJyb3ci
PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0zIj5BbHRlciBFZ288L2Rpdj4KKyAgICAg
ICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtOSBwdWxsLWxlZnQiPnt7IG1vZGVsLmFsdGVyRWdvIH19
PC9kaXY + CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbC14cy0zIj5Qb3dlcjwvZGl2PgorICAgICAgICAgIDxkaXYgY2xh
c3M9ImNvbC14cy05IHB1bGwtbGVmdCI + e3sgbW9kZWwucG93ZXIgfX08L2Rpdj4KKyAgICAgICAg
PC9kaXY + CisgICAgICAgIDxicj4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmlt
YXJ5IiAoY2xpY2spPSJzdWJtaXR0ZWQ9ZmFsc2UiPkVkaXQ8L2J1dHRvbj4KKyAgICAgIDwvZGl2
PgorICAgIDwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny
Yy9hcHAvaGVyby1mb3JtLmNvbXBvbmVudC50cyBiL3NyYy9hcHAvaGVyby1mb3JtLmNvbXBvbmVu
dC50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjY1ZmI5Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL2FwcC9oZXJvLWZvcm0uY29tcG9uZW50LnRzCkBAIC0wLDAgKzEsMjEg
QEAKK2ltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnOworCitpbXBvcnQg
eyBIZXJvIH0gZnJvbSAnLi9oZXJvJzsKKworQENvbXBvbmVudCh7CisJc2VsZWN0b3I6ICdhcHAt
aGVyby1mb3JtJywKKwl0ZW1wbGF0ZVVybDogJy4vaGVyby1mb3JtLmNvbXBvbmVudC5odG1sJwor
fSkKK2V4cG9ydCBjbGFzcyBIZXJvRm9ybUNvbXBvbmVudCB7CisKKwlwdWJsaWMgcG93ZXJzID0g
WydSZWFsbHkgU21hcnQnLCAnU3VwZXIgRmxleGlibGUnLCAnU3VwZXIgSG90JywgJ1dlYXRoZXIg
Q2hhbmdlciddOworCXB1YmxpYyBtb2RlbCA9IG5ldyBIZXJvKDE4LCAnRHIgSVEnLCB0aGlzLnBv
d2Vyc1swXSwgJ0NodWNrIE92ZXJzdHJlZXQnKTsKKworCXB1YmxpYyBzdWJtaXR0ZWQgPSBmYWxz
ZTsKKworCXB1YmxpYyBvblN1Ym1pdCgpIHsgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlOyB9CisKKwlw
dWJsaWMgbmV3SGVybygpIHsKKwkJdGhpcy5tb2RlbCA9IG5ldyBIZXJvKDQyLCAnJywgJycpOwor
CX0KK30KZGlmZiAtLWdpdCBhL3NyYy9hcHAvaGVyby50cyBiL3NyYy9hcHAvaGVyby50cwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzQ5YzkyCi0tLSAvZGV2L251bGwKKysr
IGIvc3JjL2FwcC9oZXJvLnRzCkBAIC0wLDAgKzEsOSBAQAorZXhwb3J0IGNsYXNzIEhlcm8gewor
CWNvbnN0cnVjdG9yKAorCQlwdWJsaWMgaWQ6IG51bWJlciwKKwkJcHVibGljIG5hbWU6IHN0cmlu
ZywKKwkJcHVibGljIHBvd2VyOiBzdHJpbmcsCisJCXB1YmxpYyBhbHRlckVnbz86IHN0cmluZwor
CSkgeworCX0KK30KLS0gCjIuMTMuNgoK

أواجه مشكلة مماثلة. يبدو أن المكوّن الإضافي يتعرف فقط على المتغيرات المُعلنة مباشرةً في الفئة ولكن لا يتعرف على المتغيرات المتداخلة ضمن formGroup أو formBuilder.
يعطي رمز المكون هذا خطأ Squigglies في HTML لحقلي FromControl-

export class MyDetailComponent implements OnInit {
  myForm: FormGroup;
  constructor() { }
  ngOnInit() {
    this.myForm = new FormGroup({
      name: new FormControl({ value: '', disabled: true }),
      gender: new FormControl({ value: '', disabled: true })
    });
  }
}

هذا من ناحية أخرى لا يعطي الخطأ تمايلًا لأنني قد أعلنت FormControl في الفصل مباشرة (هذا ليس حلاً لسوء الحظ لأن الزاوية لا تسمح بإعلان التحكم بالشكل خارج مجموعة النموذج) -

export class MyDetailComponent implements OnInit {
  myForm: FormGroup;
  name: FormControl;
  gender: FormControl;
  constructor() { }
  ngOnInit() {
    this.myForm = new FormGroup({
      name: new FormControl({ value: '', disabled: true }),
      gender: new FormControl({ value: '', disabled: true })
    });
  }
}

حاول قبل "!!".
على الرغم من أنها صعبة ،
لقد نجحت بهذه الطريقة.

image

hlovdal لقد جربت خطوات repro الخاصة بك ، لكن لم أتمكن من
لقد اختبرت باستخدام VS Code Linux v1.20.1 ، و Typescript 2.6.2 ، و Angular.ng-template v0.1.9
هل يمكنك من فضلك تأكيد ما إذا كانت المشكلة لا تزال موجودة في Angular.ng-template v0.1.9؟

kyliau لقد واجهت هذه المشكلة اليوم مع VS Code v1.21.1 على Windows ، و Typescript 2.3.4 و Angular.ng-template v0.1.9. إليك كيفية إنشاء النموذج:

this.form = formBuilder.group({
      amount: ["", Validators.compose([Validators.required, SomeCustomValidator.isValid])],
      sale: [{ value: "0" }],
      amountTotal: [""],
      price: [{ value: "123" }, Validators.compose([Validators.required, SomeCustomValidator.isValid])],
      discount: [{ value: "0" }, SomeCustomValidator.isValid],
      priceAfterDiscount: [""],
      sum: [""],
      sumDph: [""]
 });

وفي النموذج أحاول الوصول إليه على النحو التالي:

<ion-item [class.invalid]="!buyForm.controls.amount.valid && (buyForm.controls.amount.dirty || submitAttempt)">

الحصول على هذا الخطأ:

[Angular] Identifier 'amount' is not defined. '__type' does not contain such a member

عند إبطالها ، فإنها لا تتسبب في الخطأ (بمعنى أن buyForm.controls.amount.dirty موضّع تحته خط وليس الجزء !buyForm.controls.amount.valid ) هذا هو السبب في أن الحل المذكور أعلاه (مع النفي المزدوج) يعمل.

لقد كنت أبحث عن حل بديل لهذا منذ زمن طويل - شكرًا

guhyeon شكرا ولكن هل يمكنك شرح ما يفعله هذا؟

تضمين التغريدة
حسنًا ... لا أعرف كثيرًا.
أعتقد أنها مشكلة في برنامج التحويل البرمجي من النوع.
إنها وسيلة تعلمتها بالصدفة.

لقد حاولت استخدام هذا الحل بدلاً من ذلك ، والذي يمنع أيضًا vscode Angular Language Service من الشكوى:

password.hasError('required') باستخدام مدقق Validators.required في FormControl كلمة المرور

يتطلب AbstractControl.hasError() قيمة رمز خطأ حصلت عليها من خلال عرض خاصية AbstractControl.errors على الشاشة لتصحيح الأخطاء

{{password.errors | json}} ، الناتج: { "required": true }

من المحتمل أن تتوفر المزيد من الكتابة لرموز الأخطاء المعروفة ، بالإضافة إلى أدوات التحقق المخصصة

image

أواجه نفس المشكلة أيضًا مع المترجم المنسوخ.

image
image
مثل @ ajaysake1992

أعتقد تحت الغطاء أن هذه هي نفس المشكلة مثل # 149 - الإشارة إلى كائن بتوقيع فهرس حسب الفهرس ( control?.errors['required'] ) يعمل ولكن الإشارة باستخدام تدوين النقطة ( control?.errors.required ) هو خطأ تم الإبلاغ عنها على أنها غير صحيحة.

حصلت على هذا اليوم مع بسيط حيث كان "البحث" غير محدد وكان يعطيني تمايل حمراء.
تم تجميع التطبيق وعمله على النحو المنشود (لإحباطي بعد قضاء نصف يوم في محاولة حل مشكلة التعرج قبل تشغيله ...)
يبدو وكأنه خطأ vscode بالنسبة لي؟

إليك حل عملي حول الحل إذا كنت لا تحب "!!" على html.

your.component.ts:

الحصول على emailFormControl (): أي {
إرجاع this.formGroupName.get ('البريد الإلكتروني') ؛
}

your.component.html:

يرجى إدخال البريد الإلكتروني الصحيح.

يعمل هذا الحل بالنسبة لي ، دون إعطاء أي خطأ في التجميع / خطأ في وقت التشغيل.

نجح هذا بالنسبة لي:
في السطر الذي حددت فيه الخطأ ، قمت بعمل مسافة مع شريط المسافة قبل إغلاق العلامة (>) واختفى الخطأ.
لقد حذفت المساحة التي تم إنشاؤها وكان كل شيء طبيعيًا ، بدون أخطاء.

أيضا تواجه نفس المشكلة بالضبط. لا تعرف عناصر تحكم FormGroup التي تم إنشاؤها في FormBuilder تحسس VSCode لقالب العرض. أي فكرة عما إذا كان هناك إصلاح فعلي ممكن لهذا ، بدلاً من !! الحل

يمكنك استخدام قوس مربع بدلاً من عامل النقطة للوصول إلى اسم الخاصية. هذا يمكن أن يصلح خطأ الترجمة الخاص بك.
مثال - * ngIf = "price.errors [مطلوب]"

رائع ، الأقواس تحل اللون الأحمر. أستطيع أن أؤكد أن هذا متقطع.
أنا أستخدم Angular: 7.2.15 ، typescript: 3.1.6 و VSC 1.35.1 .
Screen Shot 2019-06-29 at 10 28 28 AM

لا يزال هذا يحدث مع Angular 8.1.3 ، مع كل من أدوات التحقق من النماذج المخصصة والمدمجة (على سبيل المثال مطلوب). سيكون رائعًا إذا كان المدققون المسجلون واضحين للتعمق. تشغيل VSC 1.36.1.

الحل البديل: استخدم التعليق التوضيحي المعقوف بدلاً من التعليق التوضيحي النقطي ، أو استخدم !! formcontrol.errors.required

يجعلني الحل البديل أفكر في ما إذا كان التحسس قد يميزه بسبب قيمته غير المحددة؟ نظرًا لأن كائن الأخطاء ليس مجموعة من أعلام الصواب / الخطأ ولكن تم تحديده من خلال وجود العلامات المذكورة (وهو نمط IMO غير عادي) ، يمكنني أن أتخيل وجود مشاكل في التحسس مع ذلك.

ivanwonder أنشأت بالفعل علاقات عامة لهذه المشكلة. لذلك دعونا ننتظر حتى يتم دمجهما.

الحل:

بدلا من:

formGroup.errors?.customValidator

استعمال:

formGroup.errors && formGroup.errors['customValidator']

أنا سعيد بوجود حل بديل ... ولكن هل تم إحراز أي تقدم أثناء التحقيق في المشكلة؟
أنا متأكد من أن الكثير منا يفضل التدوين النقطي البسيط.

لا تزال هذه المشكلة موجودة في الإصدار v0.802.3

تم قفل هذه المشكلة تلقائيًا بسبب عدم النشاط.
يرجى تقديم مشكلة جديدة إذا كنت تواجه مشكلة مشابهة أو ذات صلة.

اقرأ المزيد حول سياسة قفل المحادثة التلقائي .

_تم تنفيذ هذا الإجراء تلقائيًا بواسطة روبوت.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات