Angular Material mat-form-field多行上的占位符文本

时间:2018-05-09 20:28:36

标签: angular angular-material angular-material-5

我使用内置mat-form-field的常规textarea。我的问题是这个Textarea的占位符文本相当长。在移动设备中,空间更有限,此占位符文本会被带有省略号的Angular Material截断。

我希望将占位符文本调整到空间限制,方法是向下移动到下一行。因此,例如,而不是:

This is a really long text and it cannot fit on a single li...

我想:

This is a really long text and it cannot fit on a single
line

我已经尝试过各种方法来更改mat-input-placeholdermat-input-placeholder-wrapper的CSS,但没有成功。我知道解决方案的一部分涉及更改文本溢出属性(下面),但我无法获得其他部分。

::ng-deep .mat-input-placeholder {
  text-overflow: clip;
}

有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

::ng-deep已过时。

相反,您应该使用ViewEncapsulation并控制组件内部的CSS。

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css'],
  encapsulation: ViewEncapsulation.None,
})

对于占位符(从元素中删除placeholder

<mat-placeholder style="white-space: normal;">{{question.label}}</mat-placeholder>

然后在::ng-deep

中添加不包含example.component.css的CSS样式
.mat-form-field-label {
  white-space: normal;
}

textarea.mat-input-element {
  padding: 0px 0;
  margin: 5px 0;
}

.mat-input-placeholder {
  white-space: normal;
}

答案 1 :(得分:1)

换行文字:

<textarea></textarea>

<textarea
  matInput
  #fileName="ngModel"
  name="fileName"
  [(ngModel)]="action!.params.file!.originalName"
  type="text"
  autocomplete="off"
  autocapitalize="off"
  readonly
  required
  [matTooltip]="action!.params.file!.originalName"
></textarea>

溢出剪辑文本:

<input/>

<input
  matInput
  #fileName="ngModel"
  name="fileName"
  [(ngModel)]="action!.params.file!.originalName"
  type="text"
  autocomplete="off"
  autocapitalize="off"
  readonly
  required
  [matTooltip]="action!.params.file!.originalName"
/>