angular - Angular 材质 mat-tab-group 正在更改 textarea 模糊上的活动选项卡但未触发 selectedIndexChange?
问题描述
鉴于组件上的以下内容:
formValues = ['aaa', 'bbb', 'ccc'];
log = (value) => console.log(value);
这个HTML:
<mat-tab-group (selectedIndexChange)="log($event)">
<mat-tab *ngFor="let formVal of formValues; let indexOuter = index;"
label="Button {{indexOuter + 1}}">
<textarea matInput
[value]="formVal"
(change)="formValues[indexOuter] = $event.target.value">
</textarea>
</mat-tab>
</mat-tab-group>
将文本添加到第一个选项卡的文本区域,然后第一次更改选项卡时,文本区域文本不会更改,也不会调用日志功能。在更改第一个选项卡的文本区域中的文本并简单地单击文本区域外的任何位置但不单击选项卡标题时进行进一步调查后,选项卡更改为选项卡 2,但日志再次不运行。
由于 selectedIndexChange 显然没有运行索引不会更新,这似乎是我的错误的原因。
任何想法将不胜感激
编辑:看起来是因为通过 ngFor 支持 mat-tab 输出的数据正在被 textarea 更改编辑,这似乎是个坏主意,尽管我不知道为什么会导致这样的问题。
解决方案
发生这种情况是因为您正在改变*ngFor
正在迭代的数组。
您需要将字符串数组更改为对象数组并更改每个对象的属性,因为在这种情况下,数组元素不会更改,更改的是属性并且不会影响*ngFor
行为。
这是一个现场示例:https ://stackblitz.com/edit/angular-qhhcpi?file=app%2Ftab-group-basic-example.ts
推荐阅读
- r - R:rCharts rPlot 不显示
- python - 在 Python 中打印半个数字金字塔
- asp.net-mvc - Mvc 5在布局中打开模式用于注册httppost出错目标partialviewresult
- python - 根据在特定列中找到的值删除行
- javascript - 使用 JS 在打字机效果中停止循环
- java - 是否可以让 Hibernate 忽略 Schema Validation 列类型不匹配错误
- instagram-graph-api - Facebook-Instagram api 缺少来自 /stories/insights 的指标:操作(点击贴纸、向上滑动)以及故事是否由多种媒体组成
- android - 如何在多行 TextView 中显示内联按钮
- python - 如何使用字典在 python 中转换数组?
- javascript - I want to assign id into var but nothing display