angular - 通过Angular 6中的父组件更新兄弟组件?
问题描述
我有三个组件父-房间组件和两个子组件roomslist和roomdetails,最初将使用ngif显示房间列表组件,当用户单击添加时,将显示房间详细信息,一旦用户在房间详细信息组件中添加房间,我需要在添加房间的房间列表页面中显示。谁能让我知道如何实现它?
--- 下面是代码
export class PropertyRoomComponent implements OnInit
{
@Output("saveRoomDetails") roomDetailsEvent: EventEmitter<RoomDetail>
= new EventEmitter<RoomDetail>();
@Input("roomDetail")
public roomDetail:
RoomDetail = { rateDetails: [], occupancy: [], roomDetails: [] };
SaveRoom()
{
this.roomDetailsEvent.emit(this.roomDetail);
}
}
export class RoomComponent implements OnInit
{
@Input('roomsList')
public PropertyRooms: RoomDetail[];
SaveRoom(room)
{
this.PropertyRooms.push(room);
this.showAddRoomWindow = false;
}
}
<room-list [rooms]="this.PropertyRooms" (GetRoomDetail)="GetRoomDetail($event)"></room-list>
export class PropertyRoomListComponent implements OnInit {
public BedType: any;
public roomAmenities: any;
@Input('rooms')
roomsList: RoomDetail[];
@Output("GetRoomDetail")
GetRoomDetailEvent : EventEmitter<any> = new EventEmitter<any>();
constructor(){
console.log(this.roomsList); // undefined
}
解决方案
这是一个基本的状态管理问题。您需要在某个地方保留您的房间。有几种方法可以做到这一点。
输入和输出事件。这需要您在每次进行更改时从子级向父级发出值,并且如果您开始发出太多事件,可能会变得过于复杂。
服务供应商!单例服务允许您共享对变量的引用,例如
Rooms
. 因此,您的子组件的任何编辑都可以在父组件或注入服务的任何其他组件中看到。Ngrx。redux 模式类似于依赖注入,但强制您遵循严格的模式来访问状态。
推荐阅读
- php - 如何通过重复的键值合并数组
- javascript - 防止表单域自动绘制光标/焦点
- javascript - 为什么我的 else 部分出现解析错误?
- perforce - 使 perforce 目录的内容与最新的 depot 版本完全匹配
- react-native - React Native:如何区分开发者和“样式器”的角色
- python - 如何匹配深度自动编码器的编码器解码器尺寸?
- javascript - 我怎样才能用玩笑正确地测试我的解析器?
- node.js - 在具有外部时间限制的 Node/Express 中链接异步等待调用
- r - 如果在另一列中满足条件,则更改日期列
- android - 如何从 Firebase 数据库中检索数据 [ANDROID STUDIO]