这个问题通常是使用MAT_SELECT_VALUE_ACCESSOR提供的值引起的。解决方法是在TemplateRef中添加一个ngAfterViewInit钩子,并在其中调用cdRef.detectChanges()方法,如下所示:
import { Component, ViewChild, ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
import { MatSelect } from '@angular/material';
@Component({
selector: 'app',
template: `
Value 1
Value 2
Value 3
`
})
export class AppComponent implements AfterViewInit {
@ViewChild('select', {read: MatSelect}) select: MatSelect;
constructor(private cdRef: ChangeDetectorRef) {}
ngAfterViewInit() {
this.select.writeValue('value2');
this.cdRef.detectChanges();
}
}