I have a list of items that are displayed it in my template with an *ngFor directive. An item in the array will be replaced, so it will be rerendered. I am trying to select a specific element in the *ngFor after this rerendering.
My first try
The code below works until an element is replaced from the array and the reference I used disappears.
my.component.html
<div *ngFor='let item of array'>
<input #input type='text' [value]='item.name' \>
<button (click)='select_function( input )'></button>
</div>
my.component.ts
@Component({
// ...
})
export class MyComponent {
public array: [] = [{name: 'Peter'}, {name: 'John'}]
public select_function( element ) {
element.focus();
}
}
An incomplete solution
So I figured I should use the index somehow.
my.component.html
<div *ngFor='let item of array; let index = index;'>
<input #input type='text' [value]='item.name' \>
<button (click)='select_function(index)'>Modify</button>
</div>
my.component.ts
@Component({
// ...
})
export class MyComponent {
public array: [] = [{name: 'Peter'}, {name: 'John'}]
public select_function( index) {
// the array is mutated ( with ngrx in the actual situation )
this.array.splice( index, 1, {name: 'Mary'} );
// how do I get the nth element that was replaced from my template?
// ???
element.focus();
}
}
How can I use the index to select a reference of the element in the view?