如何从代码更改 Angular Material 2 进度条值

Howto change Angular Material 2 Progress Bar value from code

我正在尝试从组件代码更改 angular material 进度条值。我需要在不使用 binding.

的情况下更改值

以下逻辑通常与 html 控件一起使用,如文本输入。 但它不适用于进度条。

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";
}

值必须是进度条的数字:

this.progressBar.value = 15;

感谢 changedetector 解决方案,据我了解这与 OnPush 有关,现在可以使用了。但我不得不再次转换为使用绑定。所以基本上 changedetector 和绑定一起工作很好。

这是源代码:

<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();
        });
    }