在Angular 6中,如果出现错误Error: mat-form-field must contain a MatFormFieldControl,通常是由于没有正确使用matInput指令或没有将其包裹在mat-form-field中引起的。以下是解决此错误的几种方法:
matInput指令时,将其正确包裹在mat-form-field中。例如:
  
 
确保在mat-form-field中只包含一个可识别的表单控件,例如input或textarea。避免在mat-form-field中包含其他元素,例如button或div。
如果您在使用自定义表单控件时遇到此错误,请确保该控件实现了MatFormFieldControl接口。这是一个必需的接口,以便让mat-form-field识别并正确处理该控件。
import { MatFormFieldControl } from '@angular/material/form-field';
@Component({
  ...
})
export class MyCustomControl implements MatFormFieldControl {
  ...
}
 
请注意,您还需要实现ControlValueAccessor接口和其他必要的表单控件接口。
MatFormFieldModule并将其添加到您的imports数组中:import { MatFormFieldModule } from '@angular/material/form-field';
@NgModule({
  imports: [
    MatFormFieldModule,
    ...
  ],
  ...
})
export class MyModule { }
这些方法应该能够解决Error: mat-form-field must contain a MatFormFieldControl错误。如果问题仍然存在,请检查您的代码是否有其他错误,或者尝试重新安装Angular Material库。