Jaki jest parametr odczytu w @ViewChild dla

94

Potrzebujesz pomocy, aby zrozumieć znaczenie {read: ViewContainerRef} w następującym oświadczeniu.

@ViewChild('myname', {read: ViewContainerRef}) target;
Pankaj Kapare
źródło
4
zobacz to
Ankit Singh

Odpowiedzi:

119

Może istnieć kilka wystąpień różnych typów powiązanych ze znacznikiem elementu ze #mynamezmienną szablonu.

Dla każdego elementu istnieje ElementRefi ViewContainerRef(być może inne z komponentów lub dyrektyw zastosowanych do tego znacznika).

Jeśli element jest komponentem, istnieje instancja komponentu.

Do elementu można również zastosować jedną lub kilka dyrektyw

Przy pomocy {read: SomeType}powiesz jaki typ ma zostać zwrócony z elementu ze #mynamezmienną szablonu.

Jeśli nie podasz readparametru, @ViewChild()zwraca

  • ElementRef wystąpienie, jeśli nie zastosowano żadnego komponentu lub
  • wystąpienie komponentu, jeśli istnieje.
  • Jeśli chcesz uzyskać coś innego, musisz wyraźnie określić using read.

Zobacz także Jak mogę wybrać element w szablonie komponentów?

Günter Zöchbauer
źródło
„może inne z komponentów lub dyrektyw zastosowanych do tego tagu”: Jak możemy uzyskać pełną listę możliwych typów?
Ghetolay
Dyrektywy i komponenty wymienione w directives: [...]bieżącym komponencie lub PLATFORM_DITECTIVEStam, gdzie są zgodne selektory. Możesz użyć stackoverflow.com/questions/35233572/…, aby zbadać działającą aplikację.
Günter Zöchbauer
3
Obsługuje tylko typy kątowe, które są skojarzone z węzłem. HTMLElementnie jest jednym z nich. ElementRefumożliwia dostęp do HTMLElement za pomocą ʻElementRef.nativeElement.
Günter Zöchbauer
1
Po prostu próbuję różnych rzeczy i badam źródło Angular2.
Günter Zöchbauer
1
Nie możesz, gdy element jest komponentem. Możesz tylko określić, co chcesz, jeśli używasz@ViewChild(... read: ElementRef) ...
Günter Zöchbauer