2017-08-03 49 views
0

我正在尝试更改组件代码中的角度材料进度栏值。我需要更改该值,而不使用绑定如何更改代码中的角度材料2进度栏值

以下逻辑通常与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有关,现在它可以工作。但我不得不再次转换为使用绑定。所以基本上changedetector和binding在一起工作很好。

这是源代码:

<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

值必须为进度条的数:

this.progressBar.value = 15; 
+0

它不能正常工作,而且就我从文档中看到的情况而言,它也允许像字符串一样设置。 –