angular 9 массив пуст внутри метода подписки - PullRequest
0 голосов
/ 09 июля 2020

У меня есть массив, который объявлен как publi c и инициализирован как пустой массив.

correctives = [];

Теперь Внутри метода конструктора Я инициализировал метод подписки

constructor(private messageService: MessageService){
    this.childTicketSubscribe = this.messageService.getChildTicketData().subscribe((data) => {
        console.log(JSON.stringify(this.correctives)); //[]
        // print empty array
    });
}

Теперь Я инициализирую его внутри метода OnInit

ngOnInit() {
  this.correctives = [{value: ''}];
}    

Теперь у меня есть два метода: 1 для добавления данных в массив

addCorrective() {
    this.correctives.push({value: ''});
}

Другой для вызова другого компонента и данных из другого компонент входит в метод подписки.

Итак, когда я добавляю три данных в массив, а затем щелкаю другую функцию, чтобы получить данные из другого компонента. После получения данных внутри метода подписки я распечатываю this.correctives и пусто. Но должно быть три значения, как я добавил их ранее. Какая ошибка в этом коде?

Отредактировано : Также я обнаружил, Внутри метода подписки, Если я sh что-нибудь внутри массива, каждый раз, когда он хранит только последние value, не все предыдущее. Это исходное поведение?

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Вы изменяете массив как в Constructor, так и в OnInit, при нажатии OnInit следует изменить массив после Constructor, но подписка может произойти после OnInit.

0 голосов
/ 09 июля 2020

Не могли бы вы добавить код подписки в метод ngAfterViewInit .

ngAfterViewInit() {
this.childTicketSubscribe = this.messageService.getChildTicketData().subscribe((data) => {
        console.log(JSON.stringify(this.correctives)); //[]
        // print empty array
    });
  }
...