Я знаю, что по этой проблеме есть несколько тем, но предлагаемые исправления у меня не работают. Данные отображаются правильно, но вскоре исчезают.
Насколько я понимаю, необходимо активировать цикл обнаружения изменений. Я использовал:
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++;
}
Моя цель состоит в том, чтобы каждый из подпунктов отображался в таблице
Мне удалось обойти ошибку, используя - ngAfterContentChecked () {this.cdr.detectChanges (); } - Однако теперь при просмотре в браузере в таблице ничего не отображается. Даже если я просто попытаюсь вывести простой текст из ngFor вместо интерполированного элемента
Вы не предоставили достаточно кода, чтобы понять, что происходит. Эта статья очень помогла мне понять причины этой ошибки: blog.angularindepth.com/…





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