Tham số đọc trong @ViewChild là gì


92

Cần trợ giúp để hiểu nghĩa của {read: ViewContainerRef} trong câu lệnh sau.

@ViewChild('myname', {read: ViewContainerRef}) target;

Câu trả lời:


116

Có thể có một số trường hợp của nhiều loại khác nhau được liên kết với thẻ phần tử với #mynamebiến mẫu.

Đối với mỗi phần tử có một ElementRefViewContainerRef(có thể những phần tử khác từ các thành phần hoặc chỉ thị được áp dụng cho thẻ đó).

Nếu phần tử là một thành phần, thì có thể hiện thành phần.

Cũng có thể có một hoặc một số lệnh được áp dụng cho phần tử

Với việc {read: SomeType}bạn cho biết loại nào nên được trả về từ phần tử có #mynamebiến mẫu.

Nếu bạn không cung cấp readtham số, @ViewChild()trả về

  • ElementRef ví dụ nếu không có thành phần nào được áp dụng hoặc
  • trường hợp thành phần nếu có.
  • Nếu bạn muốn có một cái gì đó khác biệt, bạn cần chỉ định rõ ràng bằng cách sử dụng read.

Xem thêm Làm cách nào để chọn một phần tử trong mẫu thành phần?


'có thể những người khác từ các thành phần hoặc chỉ thị được áp dụng cho thẻ đó': Làm cách nào để chúng tôi có được danh sách đầy đủ của loại có thể?
Ghetolay

Các chỉ thị và thành phần được liệt kê trong directives: [...]thành phần hiện tại hoặc trong PLATFORM_DITECTIVESnơi một bộ chọn phù hợp. Bạn có thể sử dụng stackoverflow.com/questions/35233572/… để điều tra trên một ứng dụng đang chạy.
Günter Zöchbauer

3
Điều này chỉ hỗ trợ các kiểu Angular được liên kết với một nút. HTMLElementkhông phải là một trong số họ. ElementRefcho phép truy cập HTMLElement bằng cách sử dụng `ElementRef.nativeElement.
Günter Zöchbauer

1
Chỉ cần thử tất cả các loại và điều tra nguồn Angular2.
Günter Zöchbauer

1
Bạn không thể khi phần tử là một thành phần. Bạn chỉ có thể xác định những gì bạn muốn nếu bạn sử dụng@ViewChild(... read: ElementRef) ...
Günter Zöchbauer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.