与子组件进行交流的更好方法

时间:2019-05-03 16:00:01

标签: angular angular6 angular7 ionic4

我有一个reservation page,它扩展了ReservationController,其中包括了reservation-cards,它的html看起来像这样:

<div class="reservation-card padding-b">
  <mm-list-card [restaurant]="restaurant" [reservation]="true"></mm-list-card>
  <div class="reservation-info">
    <mm-reservation-info 
        [status]="status" 
        [reservationDetails]="reservationDetails"
        (_cancelReservation)="cancelReservation()"></mm-reservation-info>
  </div>
</div>

如您所见,我在reservation-info组件上有一个输出

reservation-info组件具有一个看起来像这样的“取消”按钮(不是整个组件,但足以用于示例):

<p *ngIf="active" class="n-margin xs-margin-t" (click)="cancelReservation()"><a>cancel</a></p>

如您所见,它具有功能cancelReservation(),除了输出和发出该函数两次之外,还有其他方法可以从保留页面的ReservationController的数据数组中删除它吗?

控制器中的数据数组如下:

savedData = {
    newData: [],
    reservation: []
};

如果我在保留信息中扩展ReservationController,它将创建一个新实例,并且数组中的数据为空。

那么最好的方法是什么?我认为多次发出输出方法不是执行此操作的最有效方法吗?

1 个答案:

答案 0 :(得分:0)

Angular利用可观察对象作为接口来处理各种常见的异步操作。例如:

  • EventEmitter类扩展了Observable。
  • HTTP模块使用可观察对象来处理AJAX请求和 回应。
  • Router和Forms模块使用可观察对象来监听和 响应用户输入事件。 有关可观察物的更多信息,请参考:-https://angular.io/guide/observables-in-angular

类似地,组件不应直接获取或保存数据,它们当然也不应故意提供虚假数据。他们应该专注于呈现数据并将数据访问权委派给服务。 有关服务的更多信息,请访问:-https://angular.io/tutorial/toh-pt4