Vscode-ng-language-service: Mendukung jenis yang diindeks

Dibuat pada 7 Jul 2017  ·  32Komentar  ·  Sumber: angular/vscode-ng-language-service

Saat menggunakan formulir reaktif, di template HTML saya mendapatkan kesalahan pada judul.


Harap masukkan nama yang valid.


Kedua "formRegister.controls.company.invalid && formRegister.controls.company.touched" digarisbawahi sebagai kesalahan tetapi aplikasi berfungsi dengan baik.

bug

Komentar yang paling membantu

Saya juga mengalami masalah ini dengan formulir reaktif.

Solusi sementara adalah mengakses properti menggunakan ekspresi accessor propety braket.

formRegister.controls['company'].invalid

Semua 32 komentar

@ virgil-av Dapatkah Anda membuat repositori yang mereproduksi masalah ini?

Kami memiliki masalah yang sama dengan jenis serikat pekerja. Suka

Public Hour: TimeSpan | tali;

Kesalahan:
Pengenal 'hhMM' tidak ditentukan. ''tidak mengandung anggota seperti itu

hhMM adalah anggota yang valid di TimeSpan tetapi tampaknya Jam diperlakukan seperti salah satu; (

@wupaz Contoh Anda diharapkan karena string tidak hhMM sebagai anggota dan tipe gabungan hanya memiliki anggota yang dimiliki tipe konstituen yang sama.

TypeScript melaporkan kesalahan serupa

Saya juga mengalami masalah ini dengan formulir reaktif.

Solusi sementara adalah mengakses properti menggunakan ekspresi accessor propety braket.

formRegister.controls['company'].invalid

Juga mendapatkan ini sebenarnya. Saya percaya ini dulu menjadi masalah di TS juga, tetapi tampaknya berhasil sekarang untuk saya. Setidaknya di TS 2.4.0 dan Angular 4.3.0:

Berikut definisi tipe untuk properti FormGroup.controls: https://github.com/angular/angular/blob/master/packages/forms/src/model.ts#L832

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

Keduanya bekerja di TS untuk saya tetapi notasi titik mengeluh dalam layanan bahasa:

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

@intellix Sama di sini

Sama di v2.5.2 .

saya memiliki masalah yang sama di tsc v2.5.2 seperti kata teman

Bisakah Anda membuat repositori yang mereproduksi masalah ini?

@chuckjaz Saya bisa membuat sesuatu yang lebih baik: tidak ada repositori.

Karena saya telah menguji dan menemukan bahwa masalah ini tidak terkait dengan kode sumber atau paket npm sama sekali. Saya mulai mengalami masalah ini dan kemudian menguji masuk sebagai pengguna yang berbeda, memulai kode studio visual di direktori yang sama dan kemudian saya tidak mendapatkan kesalahan di editor itu.

error_screenshot

Ini juga konsisten dengan kesalahan yang hanya muncul di editor dan kompilator tidak mengeluh saat membangun.

Jadi, jelas perbedaan per pengguna. Kemudian saya menguji menghapus direktori config, dan masalahnya hilang. Saat memindahkan kembali direktori lama, masalah muncul kembali.

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

Jadi beberapa cruft telah masuk ke direktori config yang memicu ini (beberapa cache akan menjadi tebakan saya). Saat mengarahkan mouse ke atas valid dari name.valid tepat setelah memulai editor, keterangan alat "Memuat ..." ditampilkan selama beberapa detik sebelum menghilang dan kesalahan terjadi. Kedua kalinya dan setelahnya, kesalahan langsung ditampilkan saat melayang.

Saya melacak perbedaan pengguna, dan itu adalah angsuran ekstensi vscode Angular.ng-template versi 0.1.7. Dan sekarang saya juga dapat menyediakan repositori yang mereproduksi masalah ini:

  1. Klon https://github.com/colinskow/angular-electron-dream-starter
  2. Terapkan tambalan terlampir.
  3. Buka src / app / hero-form.component.html.
  4. a) Dengan Angular.ng-template diinstal, name.valid dan empat pengenal lainnya akan mendapat garis bawah merah (dan [Angular] Identifier 'valid' is not defined. 'NgModel' does not contain such a member kesalahan tooltip).
    b) Dengan Angular.ng-template tidak diinstal atau dinonaktifkan, tidak ada kesalahan yang terjadi.

Patch ini relatif terhadap v7.0.0 , tetapi saya juga mengujinya terhadap commit bd5ad5f0 (Fitur / ng2 rc5 (# 875)) dari 2016-08-21 yang merupakan komit pertama yang berisi src / app / app.module .ts, dan kesalahan juga terjadi di sana, jadi saya menganggap ini adalah masalah untuk semua versi repo itu.

Karena angular-electron-dream-starter adalah cabang dari https://github.com/AngularClass/angular-starter , saya menguji tambalan di repo itu juga, dan di sana masalahnya tidak terjadi melainkan tooltip berisi informasi yang valid :

no error

Awalnya diuji pada vscode versi 1.17.2 (commit b813d129). Setelah memperbarui ke versi 1.8.0 (commit dcee22027) hasilnya sama.


Karena penanganan lampiran yang benar-benar bodoh dari Github, tambalan tersebut dikodekan base64 di sini:

RnJvbSAyYzgxMTJmYzJhM2I2M2FkZjVmZjA0MDQ3NTcyNjAyMjc2ZWMwYmZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E / SD1DMz1BNWtvbj0yMEw9QzM9Qjh2ZGFsPz0g
PGtvZGVAZGVua3VsZS5ubz4KRGF0ZTogRnJpLCAxNyBOb3YgMjAxNyAyMDozMDoyMCArMDEwMApT
dWJqZWN0OiBbUEFUQ0hdIEltcG9ydCBvZiBleGFtcGxlIGZyb20gaHR0cHM6Ly9hbmd1bGFyLmlv
L2d1aWRlL2Zvcm1zCgotLS0KIHNyYy9hcHAvYXBwLmNvbXBvbmVudC5odG1sICAgICAgIHwgNDAg
KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYXBwL2FwcC5tb2R1bGUudHMgICAgICAg
ICAgICB8ICA1ICsrKy0KIHNyYy9hcHAvaGVyby1mb3JtLmNvbXBvbmVudC5odG1sIHwgNTggKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2FwcC9oZXJvLWZvcm0u
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
oleh1mb3JtLmNvbXBvbmVudCc7CisKIC8qKgogICogYEFwcE1vZHVsZWAgaXMgdGhlIG1haW4gZW50
cnkgcG9pbnQgaW50byBBbmd1bGFyMidzIGJvb3RzdHJhcGluZyBwcm9jZXNzCiAgKi8KQEAgLTg3
LDcgKzg5LDggQEAgaWYgKEVOViA9PT0gJ2RldmVsb3BtZW50JykgewogICAgIEFib3V0Q29tcG9u
ZW50LAogICAgIEhvbWVDb21wb25lbnQsCiAgICAgTm9Db250ZW50Q29tcG9uZW50LAotICAgIFhM
YXJnZURpcmVjdGl2ZQorICAgIFhMYXJnZURpcmVjdGl2ZSwKKyAgICBIZXJvRm9ybUNvbXBvbmVu
dCwKICAgXSwKICAgaW1wb3J0czogWyAvLyBpbXBvcnQgQW5ndWxhcidzIG1vZHVsZXMKICAgICBC
cm93c2VyTW9kdWxlLApkaWZmIC0tZ2l0IGEvc3JjL2FwcC9oZXJvLWZvcm0uY29tcG9uZW50Lmh0
bWwgYi9zcmMvYXBwL2hlcm8tZm9ybS5jb21wb25lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wZmM2YjgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2FwcC9oZXJv
LWZvcm0uY29tcG9uZW50Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorICAgIDxkaXYgY2xhc3M9ImNv
bnRhaW5lciI + CisgICAgICA8ZGl2IFtoaWRkZW5dPSJzdWJtaXR0ZWQiPgorICAgICAgICA8aDE +
SGVybyBGb3JtPC9oMT4KKyAgICAgICAgPGZvcm0gKG5nU3VibWl0KT0ib25TdWJtaXQoKSIgI2hl
cm9Gb3JtPSJuZ0Zvcm0iPgorICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgorICAg
ICAgICAgICAgPGxhYmVsIGZvcj0ibmFtZSI + TmFtZTwvbGFiZWw + CisgICAgICAgICAgICA8aW5w
dXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9Im5hbWUiCisgICAgICAgICAg
ICAgICAgICAgcmVxdWlyZWQKKyAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT0ibW9kZWwu
bmFtZSIgbmFtZT0ibmFtZSIKKyAgICAgICAgICAgICAgICAgICAjbmFtZT0ibmdNb2RlbCI + Cisg
ICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPSJuYW1lLnZhbGlkIHx8IG5hbWUucHJpc3RpbmUiCisg
ICAgICAgICAgICAgICAgIGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPgorICAgICAgICAgICAg
ICBOYW1lIGlzIHJlcXVpcmVkCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8L2Rpdj4K
KyAgICAgCisgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI + CisgICAgICAgICAgICA8
bGFiZWwgZm9yPSJhbHRlckVnbyI + QWx0ZXIgRWdvPC9sYWJlbD4KKyAgICAgICAgICAgIDxpbnB1
dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iYWx0ZXJFZ28iCisgICAgICAg
ICAgICAgICAgICAgWyhuZ01vZGVsKV09Im1vZGVsLmFsdGVyRWdvIiBuYW1lPSJhbHRlckVnbyI +
CisgICAgICAgICAgPC9kaXY + CisgICAgIAorICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3Jv
dXAiPgorICAgICAgICAgICAgPGxhYmVsIGZvcj0icG93ZXIiPkhlcm8gUG93ZXI8L2xhYmVsPgor
ICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0icG93ZXIiCisgICAg
ICAgICAgICAgICAgICAgIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCld
PSJtb2RlbC5wb3dlciIgbmFtZT0icG93ZXIiCisgICAgICAgICAgICAgICAgICAgICNwb3dlcj0i
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

Saya menghadapi masalah serupa. Tampaknya plugin hanya mengenali variabel yang dideklarasikan secara langsung di kelas tetapi bukan yang bertingkat di bawah formGroup atau formBuilder.
Kode komponen ini memberikan kesalahan Squigglies di HTML untuk dua bidang 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 })
    });
  }
}

ini di sisi lain tidak memberikan coretan kesalahan karena saya telah menyatakan FormControl di kelas secara langsung (sayangnya ini bukan solusi karena angular tidak mengizinkan deklarasi formcontrol di luar formgroup) -

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 })
    });
  }
}

Coba tambahkan "!!".
Meski rumit,
Saya berhasil dengan cara ini.

image

@hlovdal Saya mencoba langkah repro Anda, tetapi saya tidak bisa menghasilkan kesalahan. Sepertinya bekerja dengan baik.
Saya menguji menggunakan VS Code Linux v1.20.1, Typecript 2.6.2, Angular.ng-template v0.1.9
Bisakah Anda mengonfirmasi jika masalah masih ada di Angular.ng-template v0.1.9?

@kyliau Saya mengalami masalah ini hari ini dengan VS Code v1.21.1 pada Windows, Ketikan 2.3.4 dan Angular.ng-template v0.1.9. Inilah cara saya membuat formulir:

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: [""]
 });

dan dalam template saya mencoba meraihnya seperti ini:

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

mendapatkan kesalahan ini:

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

Ketika dinegasikan, itu tidak membuang kesalahan (artinya hanya buyForm.controls.amount.dirty yang digarisbawahi, bukan bagian !buyForm.controls.amount.valid ). Itulah mengapa solusi yang diberikan di atas (dengan negasi ganda) berhasil.

Saya telah mencari solusi untuk ini selama berabad-abad - terima kasih

@ guhyeon terima kasih, tetapi dapatkah Anda menjelaskan apa yang dilakukannya?

@rubenhmansyah
Yah ... aku tidak tahu banyak.
Saya pikir ini adalah masalah kompilator tipe skrip.
Ini adalah kebijaksanaan yang saya pelajari secara tidak sengaja.

Saya telah mencoba menggunakan solusi ini sebagai gantinya, yang juga menghentikan vscode Angular Language Service dari mengeluh:

password.hasError('required') menggunakan Validators.required validator pada kata sandi FormControl

AbstractControl.hasError() memerlukan nilai errorCode yang saya peroleh dengan menampilkan properti AbstractControl.errors ke layar untuk debugging

{{password.errors | json}} , menghasilkan: { "required": true }

Pengetikan lebih lanjut mungkin tersedia untuk kode kesalahan yang diketahui, serta validator khusus

image

Saya juga mendapatkan masalah yang sama dengan compiler skrip.

image
image
Sama seperti @ ajaysake1992

Saya pikir di balik terpal ini adalah masalah yang sama dengan # 149 - mereferensikan objek dengan tanda tangan indeks menurut indeks ( control?.errors['required'] ) berfungsi tetapi merujuk dengan notasi titik ( control?.errors.required ) secara keliru ditandai sebagai salah.

Saya mendapatkan hari ini dengan sederhana di mana 'penelusuran' tidak ditentukan dan memberi saya coretan merah.
Aplikasi dikompilasi dan berfungsi sebagaimana mestinya (membuat saya frustrasi setelah menghabiskan setengah hari mencoba menyelesaikan masalah berlekuk-lekuk sebelum menjalankannya ...)
Kedengarannya seperti bug vscode bagi saya?

Ini solusi pekerjaan saya jika Anda tidak menyukai "!!" di html.

your.component.ts:

dapatkan emailFormControl (): any {
kembalikan this.formGroupName.get ('email');
}

komponen.anda.html:

Tolong masukkan email yang benar.

Solusi ini bekerja untuk saya, tanpa memberikan kesalahan kompilasi / kesalahan runtime.

Ini berhasil untuk saya:
Di baris di mana Anda menandai kesalahan, saya membuat spasi dengan spasi sebelum menutup tag (>) dan kesalahan menghilang.
Saya menghapus ruang yang dibuat dan semuanya normal, tanpa kesalahan.

Juga mengalami masalah yang persis sama. Kontrol FormGroup dibuat di FormBuilder tidak dikenal Intellisense VSCode untuk tampilan template. Tahu jika ada perbaikan sebenarnya yang mungkin untuk ini, daripada !! solusi

Anda dapat menggunakan kurung siku alih-alih operator titik untuk mengakses nama properti. Ini dapat memperbaiki kesalahan kompilasi Anda.
Contoh - * ngIf = "price.errors [wajib]"

Wow, tanda kurung menyelesaikan masalah merah. Saya dapat mengonfirmasi bahwa ini sporatis.
Saya menggunakan Angular: 7.2.15 , typescript: 3.1.6 dan VSC 1.35.1 .
Screen Shot 2019-06-29 at 10 28 28 AM

Ini masih terjadi dengan Angular 8.1.3, dengan validator formulir kustom dan bawaan (misalnya diperlukan). Akan luar biasa jika validator terdaftar akan jelas untuk intellisense. Menjalankan VSC 1.36.1.

Solusi: gunakan anotasi braket sebagai ganti anotasi titik, atau gunakan !! formcontrol.errors.required

Solusinya membuat saya berpikir jika intellisense mungkin menandainya karena nilainya tidak ditentukan? Karena objek kesalahan bukanlah kumpulan benar / salah bendera tetapi ditentukan oleh keberadaan bendera tersebut (yang merupakan pola IMO yang tidak biasa), saya bisa membayangkan intellisense mengalami masalah dengan itu.

@ivanwonder telah membuat PR untuk masalah ini. Jadi mari kita tunggu sampai mereka menggabungkannya.

Solusi:

Dari pada:

formGroup.errors?.customValidator

menggunakan:

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

Saya senang ada solusi ... tetapi adakah kemajuan yang dicapai saat menyelidiki masalah ini?
Saya yakin banyak dari kita lebih menyukai notasi titik sederhana.

Masalah ini masih ada di v0.802.3

Masalah ini telah dikunci secara otomatis karena tidak ada aktivitas.
Ajukan masalah baru jika Anda mengalami masalah yang serupa atau terkait.

Baca lebih lanjut tentang kebijakan penguncian percakapan otomatis kami.

_Tindakan ini telah dilakukan secara otomatis oleh bot._

Apakah halaman ini membantu?
0 / 5 - 0 peringkat