Как перезагрузить компонент с новым списком?

Я хочу перезагрузить свой компонент, нажав кнопку с новым списком. Поэтому моя проблема заключается в том, что он не перезагружает компонент с новым списком после нажатия одной из кнопок. Может ли кто-нибудь помочь мне с этим? Большое спасибо.

Это мой HTML-файл, где я передаю свой список.

<div class="content_box_left" *ngIf="isloaded==true">
  <component [list]="actualList"></component>
</div>

Некоторый код из моего Typescript-файла:

actualList=[];
list1=[1, 2, 3, "dog"];
list2=[3, "cat", "mouse", 47];

button1(){
   console.log("Button 1 pressed");
   this.actualList=this.list1;
}
button2(){
   console.log("Button 2 pressed");
   this.actualList=this.list2;
}

Компонент-HTML-код:

<div>
    <ion-list>
        <ion-item *ngFor="let list of list">
            <ion-label>{{list}}</ion-label>
        </ion-item>
    </ion-list>
</div>

Компонент-Машинопись-код:

@Component({
  selector: 'caiditems',
  templateUrl: 'caiditems.html'
})
export class CaiditemsComponent {

  @Input()
  list = []; 
  constructor() {}    
 }
}

2 ответа

Выяснил в чем проблема. *ngFor не обновляется после некоторых изменений в массиве или списке. Использование trackBy было решением моей проблемы: https://netbasal.com/angular-2-improve-performance-with-trackby-cc147b5104e5

У вас есть ошибка здесь

actualList=[];
list1=[1, 2, 3, dog];
list2=[3, cat, mouse, 47];

изменить на

actualList=[];
list1=[1, 2, 3, 'dog'];
list2=[3, 'cat', 'mouse', 47];

собака, кошка, мышь - строка, вам нужна одинарная кавычка. Остальная часть кода в порядке. Взгляни на мой стек-блиц. Я использовал твой код

https://stackblitz.com/edit/angular-zbvh8k?file=src%2Fapp%2Fapp.component.html

Другие вопросы по тегам