2017-08-03 6 views
0

角度コードのプログレスバー値をコンポーネントコードから変更しようとしています。 バインディングを使用せずに値を変更する必要があります。角度のある素材を変更する方法コードから進捗バーの値を変更する

以下のロジックは通常、テキスト入力のようなhtmlcontrolsで動作します。 しかし、プログレスバーでは動作しません。

HTML:

<md-progress-bar mode="determinate" 
    id="progressBar" name="progressBar" #progressBar></md-progress-bar> 
<button (click)="test()">Test</button> 

コード:

@ViewChild('progressBar') progressBar: any; 
test() { 
this.progressBar.value = "15"; 
} 
+0

これは、ソースコードのですか?あなたは何を達成したいですか? –

+1

これは、サーバーからパーセント値を取得するSignalRアプリケーションです。 SignalRサブスクリプションではバインドが機能しません。プログレスバーだけでなく入力コントロールに対しても同様ですが、ViewChildでアクセスするロジックは入力コントロールで動作します。何とかプログレスバーが動作しません。 –

+0

データがどこから来るかにかかわらず、バインディングが機能するはずです。私の推測では、 'this.progressBar.value'も動作するはずなので、そこに問題があります。どのようにデータを取得するのか、いつ、どこで値を変更するかについての実際のコードを表示 – PierreDuc

答えて

0

限りchangedetectorソリューションのおかげで、アンダーこれはOnPushに関連していますが、今は動作します。しかし、再びバインディングを使用するように変換する必要がありました。だから、基本的にチェンジ検出器とバインディングは一緒にうまく動作します。あなたはバインディングを使用せずに値を変更する必要がありますなぜ

<md-progress-bar mode="determinate" [value]="percentage" style="width:70%;" 
id="progressBar" name="progressBar" #progressBar></md-progress-bar> 

    url: string; 
    lastSigResult: SigResult; 
    @ViewChild('lastSigResultSpan') lastSigResultSpan: any; 
    percentage:string = ""; 
    message:string = ""; 

    constructor(private changeDetector: ChangeDetectorRef,private route: ActivatedRoute, private router: Router, private signalRService: SignalRService) { 
     this.route.params.subscribe(
      params => { 
       console.log(params); 
       if (params['url']) { // Eğer url boş değilse 
        this.url = params['url']; 
       } 
      } 
     ); 

     this.subscribeSignalREvents(); 
    } 

    private subscribeSignalREvents(): void { 
     this.signalRService.connectionEstablished.subscribe(() => { 
      console.log("Connected to signalr..."); 
     }); 
     this.signalRService.messageReceived.subscribe((result: SigResult) => { 
      console.log(result); 
      // debugger; 
      this.changeDetector.markForCheck(); 
      this.lastSigResult = result; 
      this.lastSigResultSpan.nativeElement.value = result.Message; 
      this.message = result.Message; 
      this.percentage = result.Percentage; 
      this.changeDetector.detectChanges(); 
     }); 
    } 
0

値は、ProgressBarの番号でなければなりません:

this.progressBar.value = 15; 
+0

それはうまく動作せず、ドキュメントから見る限り、文字列のように設定することもできます。 –

関連する問題