Я обновил свой Angular проект с 8,3 до angular 9 , но теперь я теряю контекст в функции, вызываемой в ngFor. Я использовал apply , чтобы установить свой контекст:
<div *ngFor="let item of myMenu;">
<button (click)="item.function.apply(this, [item])">{{item.label}}</button>
</div>
В моем TS я установил свой массив следующим образом:
this.myMenu.push({
id: '1',
label: 'ONE',
function: this.one
});
this.myMenu.push({
id: '2',
label: 'TWO',
function: this.two
});
И это мои функции для вызова :
myThisOne: 'One';
myThisTwo: 'Two';
one(item) {
console.log('id: ' + item.id + ', myThisOne: ' + this.myThisOne);
}
two(item) {
console.log('id: ' + item.id + ', myThisTwo: ' + this.myThisTwo);
}
Но я получаю undefined . Я не могу прочитать мои переменные в моем AppComponent, в консоли:
id: 1, myThisOne: undefined
id: 2, myThisTwo: undefined
Что это изменило в Angular 9? Как я могу использовать это в моей функции? Вы можете попробовать это на stackblitz .