Выражение Angular 2+ изменилось после проверки

Я знаю, что по этой проблеме есть несколько тем, но предлагаемые исправления у меня не работают. Данные отображаются правильно, но вскоре исчезают.

Насколько я понимаю, необходимо активировать цикл обнаружения изменений. Я использовал:

  ngAfterViewInit() {
      this.cdr.detectChanges();
  }

но ошибка сохраняется. Если я добавлю вызов this.cdr.detectchanges () к методу increment (), он создаст цикл и будет превышен максимальный стек вызовов.

component.html:

 <div *ngFor = "let item of messageSplit[increment()]">
      <td>{{item}}</td>
 </div>

соответствующий component.ts:

ngAfterViewInit() {
  this.cdr.detectChanges();
}

setContainer(container: string) {
  this.messageContainer = container;
}


loadMessages() {
  this.messageSplit = [];
  const currentUserId = +this.authService.decodedToken.nameid;
  this.userService.getMessages(this.authService.decodedToken.nameid,
  this.messageContainer)
  .do(messages => {
    _.each(messages, (message: Message) => {

      if (this.messageContainer !== 'unread') {
        if (this.compareArray(message) !== true) {
          this.splitMessages(message);
        }
      }
      if (message.isRead === false && message.recipientId === currentUserId) 
 {
        this.userService.markAsRead(currentUserId, message.id);
      }
    });
  }, error => {
    console.info('');
  }, () => {
    console.info(this.messageSplit);
    this.splitReady = true;
  })
  .subscribe((res: Message[]) => {
    this.messages = res;
  });
 }

compareArray(message) {
  let count = 0;
  for (let i = 0; i < this.messageSplit.length; i++) {
    if (message.content !== null) {
      if (this.messageSplit[i] === message.content.split(',')) {
        count = count + 1;
      }
    }
  }
    if (count > 0) {
      return true;
    }
    return false;
}

splitMessages(message) {
  if (message.content !== null) {
    this.messageSplit.push(message.content.split(','));
  }
}

increment() {
  return this.counter++;
}

Моя цель состоит в том, чтобы каждый из подпунктов отображался в таблице

Выражение Angular 2+ изменилось после проверки

Вам, вероятно, следует поместить данные этого последнего блока в текстовую форму для потомков.

MutantOctopus 06.04.2018 02:51

Мне удалось обойти ошибку, используя - ngAfterContentChecked () {this.cdr.detectChanges (); } - Однако теперь при просмотре в браузере в таблице ничего не отображается. Даже если я просто попытаюсь вывести простой текст из ngFor вместо интерполированного элемента

Ryn9011 06.04.2018 06:00

Вы не предоставили достаточно кода, чтобы понять, что происходит. Эта статья очень помогла мне понять причины этой ошибки: blog.angularindepth.com/…

ibenjelloun 06.04.2018 11:37
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
3
131
0

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