2017-06-06 29 views
1

我有一個單選按鈕角4收音機形式控制研究正確

<div class="radio" *ngFor="let item of shipping?.availableOptions"> 
    <input type="radio" name="shipping" value="{{item.id}}" [checked]="orderCheckoutRequest?.order?.shippingOptionId===item.id" formControlName="shipping"> 
              {{item.name}} <strong>({{item.shippingCost.amount}} {{item.shippingCost.currency | lowercase}})</strong> 

</div> 

如果我使用[檢查] =「orderCheckoutRequest?.order?.shippingOptionId === item.id」單選按鈕預選此無線電確實預選,但角形式不承認它和形式是無效的(因爲運輸選項是必需的)

如果我走另一條路線,做這樣的事情在我的組件:

const shippingControl = this.checkoutForm.get("shipping"); 
const selectedShippingOptionId = option['shippingOptionId']; 
shippingControl.patchValue(selectedShippingOptionId); 

然後,對於角形式,這是有效的,因爲控制具有值,但是我有2個問題:

  1. 當我呈現在瀏覽器按鈕的視圖不是在所有
  2. 我觸發另一HTTP請求,因爲選擇在ngOnInit()我已經訂閱了shippingControl這樣的:

    shippingControl.valueChanges.skip(1).subscribe(data => { this.cartService.updateShippingForOrder(); })

我試圖解決這個問題,跳過(1),但它不是爲某些榮幸原因。 謝謝

回答

0

推一個標誌,說「radioSelected」爲shipping?.availableOptions數組。 默認將其值設置爲false。 一旦orderCheckoutRequest?.order?.shippingOptionId===item.id 滿足,然後更新相應的「radioSelected」值爲true。

更改HTML模板[checked]

<input type="radio" name="shipping" value="{{item.id}}" [checked]="item.radioSelected" formControlName="shipping">