【问题标题】:Angular2+ Component CommunicationAngular2+组件通信
【发布时间】:2018-10-21 05:36:51
【问题描述】:

我有两个组件,OrderListComponentOrderDetailComponentOrderDetailComponent 有两个输入为 @Input() order: Order;@Input() isHidden: boolean;

我在OrderListComponent 的模板中列出了许多订单,每当单击“详细信息”按钮时,我通过发送单击的订单对象和isHidden 变量为假来激活OrderDetailComponent。(每个订单都有“详细信息”按钮)

“order-list.component.html”模板相关代码如下:

<div [hidden]="!isDetailsClicked">
    <app-order-detail [order]="clickedOrder" [isHidden]="!isDetailsClicked"></app-order-detail>
</div>

OrderDetailComponent 的模板如下:

<div [hidden]="isHidden" *ngIf="order">
<h2>{{ order.productName}} Order Details</h2>
<div>
    <span>id: </span>{{order.orderID}}
</div>
<div>
    <label>order id: <input [(ngModel)]="order.orderID"
        placeholder="orderID" [readOnly]="true"/>
    </label>
    <label>product name: <input [(ngModel)]="order.productName"
        placeholder="productName" [readOnly]="true"/>
    </label>
    <label>amount: <input [(ngModel)]="order.numberOfProduct"
        placeholder="numberOfProduct" [readOnly]="true"/>
    </label>
    <label>orderer: <input [(ngModel)]="order.orderer"
        placeholder="orderer" [readOnly]="true"/>
    </label>
    <label>status: <input [(ngModel)]="order.status"
        placeholder="status"/>
    </label>
</div>
<button (click)="goBack()">go back</button>
<button (click)="updateOrder()">save</button>

当我点击“保存”按钮时,我隐藏了OrderDetailComponent

当第一次在OrderListComponent 的模板中单击“详细信息”按钮时,OrderDetailComponent 将按预期使用正确的参数激活。但是保存订单后,即使点击“详情”按钮,我也无法激活OrderDetailComponent

我发现这很有趣,因为我正在向OrderDetailComponent 发送参数,并且它在第一时间就可以正常工作。但是对“详细信息”按钮的新点击无法再次激活OrderDetailComponent

我该如何解决这个问题?谢谢。

编辑: 这里是“updateOrder”函数:

updateOrder(): void {
this.orderService.updateOrder(this.order).subscribe(() => this.goBack());
this.isHidden =  true;

}

【问题讨论】:

  • 能否提供updateOrder函数?
  • 以某种方式记录 isDetailsClicked 的值。控制台在 Oninit 中记录此变量并查看
  • 我检查了 isClicked 并且它工作正常,每当我点击它的值为 true 时

标签: javascript angular typescript angular-components angular6


【解决方案1】:

我认为你的问题是,一旦 isDetailsClicked 设置为 true,它就不会被设置回 false,我会将该部分更改为如下所示:

<div *ngIf = "isDetailsClicked">
    <app-order-detail [order]="clickedOrder" [isHidden]="!isDetailsClicked"></app-order-detail>
</div>

【讨论】:

  • 我更改了代码,但它仍然在第一次工作,随后点击无法激活订单详细信息
猜你喜欢
  • 2016-07-18
  • 2016-05-01
  • 2017-09-04
  • 2016-12-29
  • 2017-05-04
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
相关资源
最近更新 更多