Angular8 + ngswitch嵌套组件不会更新视图

时间:2020-05-05 08:37:02

标签: angular ngzone

我对组件视图渲染有一个奇怪的问题。 我正在处理的部分组件如下所示:

<div [ngSwitch]="step">
  <comp1 *ngSwitchCase="'step1'"></comp1>

  <comp2 *ngSwitchCase="'step2'"></comp2>
</div>

Comp2使用如下共享组件:

<ul>
  <li *ngFor="let p of products">
    {{p}}
    <change-quantity [quantity]="p.quantity" 
                     (quantityChanged)="onChangeQuantity(p,$event)">
    </change-quantity>
  </li>
</ul>

我遇到的问题是,如果我使用<change-quantity>初始化父组件,step = 'step2'不会渲染模型更改,但是如果我从step='step1'开始然后转到{{1 }}效果很好。 更改数量看起来像这样:

step='step2'

我发现在更改产品数量模型时可以使用onChangeQuantity(product, ev) { product.quantity = ev; } 的解决方法,但是我认为这不是正确的方法。我会很高兴找到比手动触发ngZone更好的方法。

UPD:我试图

  1. 用很少的ngZone代替*ngSwitch-没有成功
  2. 试图通过重新创建这样的数组来强制进行更改检测(也没有成功):
*ngIf

1 个答案:

答案 0 :(得分:0)

我敢打赌products数组会更新而不更新引用。 Here it is解释了可能的解决方案。