2016-10-04 104 views
1

我離子信息更新:Ionic2離子範圍不ngModel

科爾多瓦CLI:6.3.1

離子Framework版本:2.0.0-beta.11

離子CLI版本:2.1。 0-beta.3

離子應用庫版本2.0.0-beta.20

HTML:

<ion-content padding> 
    <form [formGroup]="myForm" (ngSubmit)="submitFunction()"> 
     <ion-item> 
      <ion-range [(ngModel)]="myRange" name="formRange" formControlname="formRange"></ion-range> 
     </ion-item> 
    </form> 
    <button (click)="myFunction()"> function </button> 
    {{myRange}} 
</ion-content> 

在開始的時候,我的離子範圍的輸入將顯示2和{{myRange}}太

當我試圖直接與範圍的更新,它的確定。 {{myRange}}顯示正確的值。但如果我用一個函數更新它不起作用。

constructor(private builder: FormBuilder) { 
    this.myRange = 2; 
    this.myForm = builder.group({ 
     'formRange':this.myRange, 
    }); 
} 
public myFunction() 
{ 
    this.myRange = 9; 
} 

的顯示{{myRange}}將顯示9,但離子範圍輸入仍然會顯示2

難道我做錯了什麼?

+0

沒有形式它應該工作https://plnkr.co/edit/ex2IHfIVQShZktYh01iP?p=preview – yurzui

+0

隨着您可以更新表單價值形態https://plnkr.co/edit/pTfsHxnYRfP6M71mQuBv?p=預覽 – yurzui

回答

0

嘗試

<ion-range [(ngModel)]="myValue" name="formRange" formControlname="formRange"></ion-range> 

事實上,目前還不清楚爲什麼你有2個變量myRangemyValue和它們之間有什麼關係。但在任何情況下,通過myValuengModel

+0

你說得對,這兩個變量沒有用處。但是現在我改正了它,當我將myValue設置爲其他值時,它仍然沒有更新我的離子範圍。 (我用console.log測試過,它正確地更新了myValue的值) – Merwyn

+0

你的Ionic2版本是什麼? betas有一些問題 –

+0

Ionic Framework版本:2.0.0-beta.11 Ionic Cli版本:2.0.0 我現在還沒有更新它一個月。我會嘗試。 – Merwyn

3

我通過在ionChange回調中調用this.zone.run()解決了該問題,該回調迫使UI刷新。

import { Component, NgModule, ViewChild, ElementRef, NgZone } from '@angular/core'; 
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 
import {BrowserModule} from '@angular/platform-browser'; 

@Component({ 
    selector: 'page-myLevel', 
    template: ` 
    <ion-list> 
     <ion-list-header>Level {{myRange}}</ion-list-header> 
     <ion-item> 
      <ion-range min="1" max="10" debounce="5" pin="true" step="1" snaps="true" color="secondary" [(ngModel)]="myRange" (ionChange)="updatePro($event)"> 
      </ion-range> 
     </ion-item> 
    </ion-list> 
    ` 
}) 
export class myLevel { 
    myRange: Number; 

    constructor(public viewCtrl: ViewController, private builder: FormBuilder, private zone: NgZone) { 
    } 

    updatePro(e){ 
    /// Refresh the UI 
    this.zone.run(() => { 
      console.log('UI has refreshed'); 
     }); 
    } 

} 
+0

這也適用於我,但我希望有一種方法可以做到這一點沒有... – Guaycuru