Có, bạn có thể đặt đầu vào của các thành phần được hiển thị qua cửa hàng bộ định tuyến . Đáng buồn thay, bạn phải làm điều đó theo chương trình, như đã đề cập trong các câu trả lời khác. Có một cảnh báo lớn đối với điều đó khi các vật thể quan sát được tham gia (mô tả bên dưới).
Đây là cách thực hiện:
(1) Kết nối với activate
sự kiện của bộ định tuyến-đầu ra trong mẫu mẹ:
<router-outlet (activate)="onOutletLoaded($event)"></router-outlet>
(2) Chuyển sang tệp phân loại của phụ huynh và đặt đầu vào của thành phần con theo chương trình mỗi khi chúng được kích hoạt:
onOutletLoaded(component) {
component.node = 'someValue';
}
Phiên bản trên của onOutletLoaded
được đơn giản hóa để rõ ràng hơn, nhưng chỉ hoạt động nếu bạn có thể đảm bảo tất cả các thành phần con có cùng đầu vào chính xác mà bạn đang gán. Nếu bạn có các thành phần với các đầu vào khác nhau, hãy sử dụng loại bảo vệ:
onChildLoaded(component: MyComponent1 | MyComponent2) {
if (component instanceof MyComponent1) {
component.someInput = 123;
} else if (component instanceof MyComponent2) {
component.anotherInput = 456;
}
}
Tại sao phương pháp này có thể được ưu tiên hơn phương thức dịch vụ?
Cả phương pháp này và phương thức dịch vụ đều không phải là "cách phù hợp" để giao tiếp với các thành phần con (cả hai phương pháp đều không có liên kết mẫu thuần túy), vì vậy bạn chỉ cần quyết định cách nào phù hợp hơn cho dự án.
Tuy nhiên, phương pháp này cho phép bạn tránh tạo đối tượng trung gian (dịch vụ), đối tượng này kết hợp chặt chẽ giữa dịch vụ và các thành phần con. Trong nhiều trường hợp, điều này gần giống với "cách góc cạnh" hơn vì bạn có thể tiếp tục truyền dữ liệu cho các thành phần con của mình thông qua @Inputs. Nó cũng phù hợp với các thành phần đã có sẵn hoặc của bên thứ ba mà bạn không muốn hoặc không thể kết hợp chặt chẽ với dịch vụ đó. Mặt khác, nó có thể cảm thấy ít giống kiểu góc cạnh hơn khi ...
Cảnh báo trước
Lưu ý với phương pháp này là vì bạn đang truyền dữ liệu theo chương trình, nên bạn không còn có tùy chọn chuyển dữ liệu có thể quan sát được trong mẫu của mình (ngạc nhiên!). Điều đó có nghĩa là bạn mất đi lợi thế to lớn của việc quản lý vòng đời của thiết bị có thể quan sát một cách góc cạnh cho bạn khi bạn sử dụng mô hình pipe-async.
Thay vào đó, bạn sẽ cần thiết lập thứ gì đó để nhận các giá trị có thể quan sát được hiện tại bất cứ khi nào onChildLoaded
hàm được gọi. Điều này có thể cũng sẽ yêu cầu một số phần nhỏ trong onDestroy
hàm của thành phần mẹ . Điều này không có gì quá bất thường, có những trường hợp khác cần phải thực hiện điều này, chẳng hạn như khi sử dụng một thiết bị có thể quan sát mà thậm chí không vào được mẫu.
node
nơi nó như một loại đểstring
và nó dường như không làm việc hoặc tôi đang làm điều gì sai