我想在另一個組件中的某個活動之後對一個組件進行更改。這些組件沒有父/子關係。請告訴我正確的解決方案如何在一個組件中觸發通知事件並在Angular 4中監聽另一個組件(組件沒有父/子關係)
3
A
回答
1
您可以使用私人主題和公共可觀察物創建雙向流的共享服務。這兩個組件都可以訂閱這些觀察值,其中可以推送新的值,而其他參數可以根據新的值更改進行反應。
組件在plunker沒有任何父子關係。
@Injectable()
export class MissionService {
// Observable string sources
private missionAnnouncedSource = new Subject<string>();
private missionConfirmedSource = new Subject<string>();
// Observable string streams
missionAnnounced$ = this.missionAnnouncedSource.asObservable();
missionConfirmed$ = this.missionConfirmedSource.asObservable();
// Service message commands
announceMission(mission: string) {
this.missionAnnouncedSource.next(mission);
}
confirmMission(astronaut: string) {
this.missionConfirmedSource.next(astronaut);
}
}
+0
感謝您的參考。我嘗試並根據之前關於共享服務的評論開發了一個解決方案,並且工作正常。謝謝! –
0
一些其他好的方法來更新根據其他成分變化的成分:
- 如果同時共享同一個家長,您可以輸出的變化給父父將更新其他子組件(更新輸入)。
- 您可以使用共享存儲(例如ng-redux)。
- 作爲查詢參數使用某種UI路由器(取決於用例)。
相關問題
- 1. 如何監聽父組件中呈現的所有子組件?
- 2. Angular.io/Angular 4.如何在觸發另一個組件視圖時刷新一個組件視圖
- 3. 一個監聽器instace對所有組件或每個組件
- 4. 從一個組件到另一個組件中的角4
- 5. 如何監聽由父組件分派的子組件內部的事件
- 6. 父組件中的父元件中的觸發事件從路由中的子組件加載Angular
- 7. (ReactJs)如何在另一個組件中包含多個組件?
- 8. 在父組件中創建並返回一個新組件
- 9. Angular2父組件未觸發子組件事件
- 10. 一個HTML元素監聽一個事件,然後監聽另一個事件
- 11. 如何在子組件中調用函數:a)另一個子組件b)父組件,反之亦然?
- 12. 子組件沒有得到其父母的觸發事件
- 13. JPanel沒有聽到關鍵事件時有一個JButton的子組件
- 14. 在另一個組件中調用一個組件的函數
- 15. 如何從Angular 2中的子組件事件觸發父組件中的本地引用?
- 16. 發送一個動作從一個子組件到Ember 2.2中的父組件
- 17. 如何從子組件中調用父組件中的事件?
- 18. JSF + Seam + a4j從一個不同的組件事件觸發一個組件ajax
- 19. Angular:許多組件監聽關鍵事件 - 重構?
- 20. 你如何在另一個組件中調用組件?
- 21. React.js如何在另一個組件中使用組件?
- 22. 如何在另一個組件中顯示組件的內容?
- 23. Angular 2將組件(或HTML)注入到另一個組件中
- 24. reactjs父觸發子組件
- 25. 角4父組件事件偵聽器不會被孩子發出的事件
- 26. React組件沒有觸發onClick事件
- 27. Angular 2:從另一個組件調用現有組件
- 28. 如何在uipickerview組件中放置多個數組,並在一個組件中選擇行時如何獲得另一個組件中的數組
- 29. 創建一個由組件監聽的控制器事件
- 30. 如何觸發一個兒童Angular 1.5組件中的動作?
如果您沒有父子關係,您可以使用共享服務將事件從一個發送到另一個 – JayDeeEss
謝謝!請給我一個簡單的例子來說明清楚。這會有很大的幫助。 –
@ParitaPatel檢查此鏈接。 https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service 此外,請參閱此答案。 https://stackoverflow.com/a/44064843/5476757 –