Angular 数据绑定在角度模式下不起作用

Angular 数据绑定在角度模式下不起作用,angular,angular2-template,angular2-forms,Angular,Angular2 Template,Angular2 Forms,问题:删除第一行并添加第二行时,第一行的值将替换为第二行的值 我为我所面临的问题创造了一个机会 复制步骤: 单击“选择一个”下拉列表并选择“屏幕1”选项 再次单击“选择一个”下拉列表并选择“屏幕2”选项 现在删除第一行(屏幕1) 再次单击“选择一个”下拉列表并选择“屏幕3”选项 第一行的值将替换为第二行的值 我不知道我的代码中有什么错误导致了这个问题。您的主要问题是您使用了ngModel来选择元素 所以,当您在此时从select元素中选择项时,selectedIds[rowIndex]项中的值会

问题:删除第一行并添加第二行时,第一行的值将替换为第二行的值

我为我所面临的问题创造了一个机会

复制步骤:

  • 单击“选择一个”下拉列表并选择“屏幕1”选项
  • 再次单击“选择一个”下拉列表并选择“屏幕2”选项
  • 现在删除第一行(屏幕1)
  • 再次单击“选择一个”下拉列表并选择“屏幕3”选项
  • 第一行的值将替换为第二行的值


    我不知道我的代码中有什么错误导致了这个问题。

    您的主要问题是您使用了ngModel来选择元素

    所以,当您在此时从select元素中选择项时,selectedIds[rowIndex]项中的值会发生更改

    我已经在第一部分应用了小的代码重构,如下所示,这将对您有所帮助

    <div *ngFor="let id of selectedIds; let rowIndex = index">
        <select name="id_{{rowIndex}}" class="form-control" required >
            <option *ngFor="let screen of screens"
            [selected]="screen.screenId==id"
             [ngValue]="screen.screenId">{{screen.screenName}}
            </option>
        </select>
        <a class="pointer" (click)="removeScreen(rowIndex)">Delete</a>
    </div>
    
    
    {{screen.screenName}
    删除
    
    已经很晚了,但问题是Metronic模板中存在以下代码:
    changeDetection:ChangeDetectionStrategy.OnPush,

    您应该对这行代码进行注释以启用数据绑定。

    如果显示索引和数组,您将更好地了解正在发生的情况:添加更多选项,如1,2,3,4,1,2,3,4,1,2,3,4,然后更改生成的值2或其他值。他们相互影响。也许可以采用一种方法,即不修改列表本身,而是生成新列表。。在我看来会更容易。@ibenjelloun是的,你是对的。。。我也这样做了。删除和添加后数组是正确的,但为什么值会更改?问题出在哪里?@Stefan Rein,但是当前代码中的问题是什么?它在UI上工作,但是绑定不工作,因为您已经删除了ngModel…现在问题是根据您的建议,在这个解决方案中绑定将如何工作?为此,您需要为绑定创建单独的属性,就像您需要创建自定义对象列表就地编号数组(selectedIds)一样。你想让我创建一个样本吗?你为我解决这个问题做了很多。如果您能为同样的产品制作一个样品,那将非常感谢您。很抱歉给您带来不便:)