matInput 是一个指令,它能让原生的 <input><textarea> 元素与 <mat-form-field> 协同工作。

所有能在标准 <input><textarea> 元素上使用的属性都同样能用在 <mat-form-field> 内部的元素上。 这些属性也包括像 ngModelformControl 这样的 Angular 指令。

唯一的限制是 type 属性只能是 matInput 所支持的值之一。

下列输入框类型可以和 matInput 一起使用:

<mat-form-field> 的一些特性可以和 <input matInput><textarea matInput> 一起使用。 这些特性包括错误信息、提示信息、前缀与后缀和主题。要了解这些特性的更多信息,参见表单字段的文档

占位符是当 <mat-form-field> 浮起但输入框为空时显示的文本。 它可以给用户一个额外的提示,来告诉他们该在输入框中输入什么。 占位符可以通过 <input><textarea> 上的 placeholder 属性进行指定。 在某些情况下,<mat-form-field> 可以把此占位符用作标签(参见表单字段的文档)。

<mat-form-field> 允许你 将错误消息与你的 matNativeControl 关联。默认情况下,当控件无效且用户与(触碰)元素交互或父表单已提交时,会显示这些错误消息。如果你希望覆盖此行为(例如,在无效控件变脏或父表单组无效时立即显示错误),可以使用 matNativeControlerrorStateMatcher 属性。该属性接受 ErrorStateMatcher 对象的实例。 ErrorStateMatcher 必须实现一个名为 isErrorState 的方法,该方法接受此 matNativeControlFormControl 以及父表单,并返回一个布尔值,指示是否应该显示错误。( true 表示应该显示, false 表示不应该显示)。

全局的错误状态匹配器可以通过 ErrorStateMatcher 提供者来指定。它将作用于所有输入框。 为方便起见,可以使用 ShowOnDirtyErrorStateMatcher 作为全局配置,来要求只有当输入框是脏(dirty)且无效(invalid)时才显示错误信息。

@NgModule({
  providers: [
    {provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher}
  ]
})

通过使用 CDK 中的 cdkTextareaAutosize 指令,可以把 <textarea> 元素做成自动调整大小的。

CDK 提供了一些工具来检测输入合适被自动填充了,并修改自动填充状态的外观。

matInput 指令和原生的 <input> 一起使用,以提供具有无障碍性的用户体验。

如果容器 <mat-form-field> 具有一个标签,它就会自动用作该 <input>aria-label 属性。 不过,如果该表单字段没有指定过标签,就应该添加 aria-labelaria-labelledby<label for=...>

任何 mat-errormat-hint 都会自动添加到该输入框的 aria-describedby 列表中,并且 aria-invalid 会根据输入框的有效性状态进行自动更新。

传达错误时,请确保不要仅仅依赖颜色。在消息本身中,你可以使用图标或文本(例如“错误:”)来指示此消息是错误消息。

当你尝试将输入框的 type 属性设置为 matInput 指令不支持的值时,将引发此错误。 如果需要使用不支持的输入类型和 <mat-form-field>,请考虑编写自定义表单字段控件