Variabel referensi template akses dari kelas komponen


108
<div>
   <input #ipt type="text"/>
</div>

Apakah mungkin untuk mengakses variabel akses template dari kelas komponen?

yaitu, dapatkah saya mengaksesnya di sini,

class XComponent{
   somefunction(){
       //Can I access #ipt here?
   }
}

Jawaban:


152

Itu adalah kasus penggunaan untuk @ViewChild:

https://angular.io/docs/ts/latest/api/core/index/ViewChild-decorator.html

class XComponent {
   @ViewChild('ipt', { static: true }) input: ElementRef;

   ngAfterViewInit() {
      // this.input is NOW valid !!
   }

   somefunction() {
       this.input.nativeElement......
   }
}

Berikut demo yang berfungsi:

https://stackblitz.com/edit/angular-viewchilddemo?file=src%2Fapp%2Fapp.component.ts


Tapi pada debugging saya mendapatkan this.input sendiri sebagai undefined.
jackOfAll

Seperti yang saya sebutkan, ini hanya tersedia SETELAH acara ngAfterViewInit()dipecat. Anda harus mengimpor ViewChilddari '@ angular / core` ..
mxii

Tapi bagaimana kita bisa menetapkan nilai? Saya sudah mencoba this.ipt.nativeElement.setAttribute('value', 'xxx');tetapi tidak ada yang terjadi. Dan tidak ada metode seperti value()atau setValue(), bahkan jika saya mendeklarasikannya dengan tipe HTMLInputElement (Saya mendasarkan ini pada kode IDE yang mengisyaratkan / pelengkapan otomatis). Dalam kasus saya, saya tidak peduli tentang membaca nilainya. Saya hanya perlu menetapkan nilai yang berbeda.
MrCroft

Saat ini di Holiday .. sudah coba setPropertyjuga?
mxii

1
seharusnya tidak this.input.nativeElement.value = 'test'bekerja ?! mungkin ada perilaku khusus dengan bentuk dan ikatannya.
mxii
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.