ngModel não pode detectar alterações na matriz corretamente

O modelo de componente:

private SomeArray = [{ key: "Initial" }];

O usuário pode adicionar / remover itens dinamicamente:

addField() {
    this.SomeArray.push({ key: Math.random().toString() });
}

removeField(index: number) {
    this.SomeArray.splice(index, 1);
}

Marcação de modelo:

 <div class="col-xs-12">
     <button (click)="addField()" type="button">Add</button>
 </div>

 <div *ngFor="let field of SomeArray; let i = index;">
     <input [(ngModel)]="field.key" #modelField="ngModel" [name]=" 'SomeArray['+i+'].key' " type="text" class="form-control" required />
     <div [hidden]="modelField.pristine || !(modelField.errors && modelField.errors.required)" class="alert alert-danger">
        Required error
     </div>

    <button (click)="removeField(i)" class="btn btn-danger">Remove</button>
 </div>

Isso funciona até que o usuário remova qualquer item doSomeArray. Se eu adicionar alguns dois itens inicialmente:

e remova aquele com 1 índice:

depois de adicionar outro item, Angular trate-o como item com índice 0 e 1 (o novo item "ocupa" as duas entradas):

(o item com a chave 0,1345 ... não é exibido)

Vale a pena observar itens deSomeArray são conforme o esperado, mas a ligação de dados falha. Qual pode ser a razão disso?

Atualizar: Graças aos comentários de @Stefan Svrkota e @ AJT_82, é conhecido por mim que o problema pode ser resolvido adicionando[ngModelOptions]="{standalone: true}" para a entrada necessária. Mas eu não conseguia parar de pensar no motivo do problema em minha causa, sem definirstandalone opção (existe um valor único para cada atributo de nome, portanto, exceto por nada de errado aqui).

Finalmente, descobri que o comportamento ocorre quando os elementos de entrada estão<form> somente tag -Amostra Plunker aqui (incluir o modelo com a tag do formulário é o motivo desse problema).

Alguma idéia desse comportamento?

questionAnswers(1)

yourAnswerToTheQuestion