You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular+Angular Formly+Material中并排布置输入框(无需外部CSS)

实现Angular Formly + Angular Material输入框并排(无外部CSS)

嘿,这个场景我刚好经常碰到!不用写额外CSS的话,其实Angular Formly结合Angular Material有两种很方便的实现方式,都是利用框架自带的能力:

方法1:用Angular Material Grid List布局

Material的Grid系统天生就是用来做响应式布局的,把每个输入框放到mat-grid-tile里,指定占比就能轻松并排,完全不用自定义样式。

模板代码

<form [formGroup]="form">
  <!-- 总列数设为12,两个输入框各占6列 -->
  <mat-grid-list cols="12" gutterSize="16px">
    <mat-grid-tile colspan="6">
      <formly-field [field]="fields[0]"></formly-field>
    </mat-grid-tile>
    <mat-grid-tile colspan="6">
      <formly-field [field]="fields[1]"></formly-field>
    </mat-grid-tile>
  </mat-grid-list>
</form>

组件类配置

import { Component } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { FormlyFieldConfig } from '@ngx-formly/core';

@Component({
  selector: 'app-your-component',
  templateUrl: './your-component.component.html',
})
export class YourComponent {
  form = new FormGroup({});
  model: any = {};
  fields: FormlyFieldConfig[] = [
    {
      key: 'firstName',
      type: 'input',
      props: {
        label: 'First Name',
        required: true,
      },
    },
    {
      key: 'lastName',
      type: 'input',
      props: {
        label: 'Last Name',
        required: true,
      },
    },
  ];
}

注意:要确保你的模块里已经导入了MatGridListModule和MatGridTileModule哦。


方法2:用Formly Field Group + Material Flex布局类

这种方式更紧凑,直接给Formly的字段组和字段添加Material自带的flex类,让容器变成弹性布局,自动分配空间。

组件类配置

fields: FormlyFieldConfig[] = [
  {
    // 给字段组添加flex布局类
    className: 'd-flex',
    fieldGroup: [
      {
        key: 'firstName',
        type: 'input',
        props: {
          label: 'First Name',
          required: true,
        },
        // 让输入框占满可用空间,加右边距分隔
        className: 'flex-fill mr-2',
      },
      {
        key: 'lastName',
        type: 'input',
        props: {
          label: 'Last Name',
          required: true,
        },
        className: 'flex-fill',
      },
    ],
  },
];

模板代码

<form [formGroup]="form">
  <formly-form [fields]="fields" [model]="model"></formly-form>
</form>

这里的d-flex、flex-fill、mr-2都是Angular Material自带的工具类,不用你写一行自定义CSS,而且响应式表现也很好。

两种方法都能满足你的需求,看你更喜欢哪种布局方式啦!

内容的提问来源于stack exchange,提问作者chandu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:43