Untuk apa parameter read di @ViewChild

94

Butuh bantuan untuk memahami arti {read: ViewContainerRef} dalam pernyataan berikut.

@ViewChild('myname', {read: ViewContainerRef}) target;
Pankaj Kapare
sumber
4
lihat ini
Ankit Singh

Jawaban:

119

Mungkin ada beberapa contoh dari berbagai jenis yang dikaitkan dengan tag elemen dengan #mynamevariabel kerangka.

Untuk setiap elemen ada ElementRefdan ViewContainerRef(mungkin yang lain dari komponen atau arahan yang diterapkan ke tag itu).

Jika elemen adalah sebuah komponen, maka ada turunan komponen.

Mungkin juga ada satu atau beberapa arahan yang diterapkan ke elemen

Dengan {read: SomeType}Anda memberi tahu jenis apa yang harus dikembalikan dari elemen dengan #mynamevariabel template.

Jika Anda tidak memberikan readparameter, @ViewChild()kembalikan

  • ElementRef Misalnya jika tidak ada komponen yang diterapkan, atau
  • contoh komponen jika ada.
  • Jika Anda ingin mendapatkan sesuatu yang berbeda, Anda perlu menentukan secara eksplisit menggunakan read.

Lihat juga Bagaimana cara memilih elemen di template komponen?

Günter Zöchbauer
sumber
'mungkin orang lain dari komponen atau arahan diterapkan ke tag itu': Bagaimana kita bisa mendapatkan daftar lengkap jenis yang mungkin?
Ghetolay
Arahan dan komponen yang tercantum dalam directives: [...]komponen saat ini atau di PLATFORM_DITECTIVESmana penyeleksi cocok. Anda dapat menggunakan stackoverflow.com/questions/35233572/… untuk menyelidiki aplikasi yang sedang berjalan.
Günter Zöchbauer
3
Ini hanya mendukung tipe Angular yang terkait dengan sebuah node. HTMLElementbukan salah satunya. ElementRefmemungkinkan untuk mengakses HTMLElement menggunakan `ElementRef.nativeElement.
Günter Zöchbauer
1
Hanya mencoba semua jenis hal dan menyelidiki sumber Angular2.
Günter Zöchbauer
1
Anda tidak bisa jika elemennya adalah komponen. Anda hanya dapat menentukan apa yang Anda inginkan jika Anda menggunakan@ViewChild(... read: ElementRef) ...
Günter Zöchbauer