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;

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?


„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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.