Angular 4 材料芯片占位符无法正常工作

Posted

技术标签:

【中文标题】Angular 4 材料芯片占位符无法正常工作【英文标题】:Angular 4 material chips placeholder not working properly 【发布时间】:2018-05-27 02:57:43 【问题描述】:

我试图用可选择和可移动的选项来实现 angular mat-chip。但问题是占位符在加载时移到顶部。我不确定我在代码上做错了什么。请有人帮我解决这个问题。

在下方添加了 GIF

我的代码是

<mat-form-field>
  <mat-chip-list #chipList>
    <mat-chip *ngFor="let keyword of keywords" [selectable]="selectable"
             [removable]="removable" (remove)="remove(keyword)">
      keyword
      <mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
    </mat-chip>
    <input placeholder="Keywords"
           [matChipInputFor]="chipList"
           [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
           [matChipInputAddOnBlur]="addOnBlur"
           (matChipInputTokenEnd)="add($event)" />
  </mat-chip-list>
</mat-form-field>

ts

  visible: boolean = true;
  selectable: boolean = true;
  removable: boolean = true;
  addOnBlur: boolean = true;
  separatorKeysCodes = [ENTER, COMMA];
  keywords= [];   // At time load i need this to be empty


public add(event: MatChipInputEvent): void 
    let input = event.input;
    let value = event.value;
    if ((value || '').trim()) 
        this.keywords.push(value.trim());
    
    if (input) 
        input.value = '';
    


public remove(keyword: any): void 
    let index = this.keywords.indexOf(keyword);
    if (index >= 0) 
        this.keywords.splice(index, 1);
    

我使用了与材料文档中给出的相同代码,但我所做的唯一更改不是加载数组值,而是在加载时传递空数组。请有人帮我解决这个问题

【问题讨论】:

我在过去的一个半小时里一直在处理同样的问题。希望有人解决。 【参考方案1】:

ts 文件中的关键字拼写有问题。您已将其定义为

  keyowords = [];

您在html文件中引用的名称是关键字。将ts文件中的名称改为

keywords = [];

这是相同的 stackblitz 代码:- https://stackblitz.com/edit/angular-rtti3v?file=app%2Fchips-input-example.html

【讨论】:

抱歉,我在问题中写错字了,但在我的代码中,我的关键字拼写正确 今天再次尝试使用您的 stackblitz 代码,但没有成功:-/ 验证你有最新版本的角度和角度材料。从你的 gif 很难看出,但元素是否专注于启动?如果是这样,看看你能做些什么来避免这种情况。【参考方案2】:

我将 Angular 从 4.4.X 更新到最新的 5.2.2。问题得到了解决。似乎是 Angular 错误。

【讨论】:

以上是关于Angular 4 材料芯片占位符无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Angular 中关于 IE 问题的占位符

mat-autoComplete 中的占位符不起作用,如 Angular Material Documentation 中所示

占位符在 IE 中无法正常工作,但适用于 Chrome

HTML 的占位符属性在 IE10 中无法正常工作

如何动态翻译 html5 占位符

如何解决 Firefox 的材料设计输入字段占位符屏幕阅读器问题?