У меня проблема с обновлением дочернего компонента без перезагрузки всего сайта.
родительский компонент структуры:
родительский компонент:
<div class="overview">
<div class="vehicle-img">
<img src={{vehicleImg}} />
</div>
<div class="board">
<div class="board-column company-overview">
<div class="board-column-header">{{ "COMPANY_OVERVIEW.TITLE" | translate}}</div>
<div class="board-column-content">
<app-company-overview [companyOverviewData]="companyOverviewData"></app-company-overview>
<div *ngIf="!companyOverviewData" class="loading">
<app-loading></app-loading>
</div>
</div>
</div>
<div class="board-column feeds">
<div class="board-column-header">{{ "FEEDS.TITLE" | translate}}</div>
<div class="board-column-content">
<app-feeds [FeedsData]="feedsData"></app-feeds>
<div *ngIf="!feedsData" class="loading">
<app-loading></app-loading>
</div>
</div>
</div>
</div>
компонент кормов:
<div class="feeds">
<mat-card class="feed-card">
<mat-card-title>
<div class="title">
<h3>{{ 'FEEDS.SUBTITLE' | translate}} {{vin}}</h3>
<hr>
</div>
</mat-card-title>
<app-feed-list></app-feed-list>
<div class="comment">
<textarea class="textarea" matInput placeholder="Enter your comment ..." [(ngModel)]="feedsComment"></textarea>
<button mat-button [disabled]="!feedsComment" (click)="sendComment()">
<mat-icon class="send-button" matSuffix>send</mat-icon>
</button>
</div>
</mat-card>
</div>
в этом компоненте есть поле ввода и кнопка.
если кнопка нажата, она вызовет сервис post api. отправить данные в Backend.
public sendComment(): void {
alert(this.feedsComment);
let newFeeds = this.createFeeds();
this.feedsService.sendFeedsComment(newFeeds).subscribe(() => {
this.feedsService.getFeedsOverview(this.vin).subscribe((feedsData: Feeds[]) => {
this.feedsOverviewData = feedsData;
});
});
}
feeds-list.html:
<div class="feed-list">
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="feeds">
<td mat-cell *matCellDef="let item">
<mat-card-header>
<div mat-card-avatar>
<mat-icon class="avatar">insert_emoticon</mat-icon>
</div>
<mat-card-title class="feeds-header"><b>
<div *ngIf="item.comment !== ''">
<span>n-Level {{item.user}}</span>
</div>
<div *ngIf="item.comment === ''">
<span>Event</span>
</div>
</b>
</mat-card-title>
<mat-card-subtitle class="feeds-date">{{item.date | date: 'dd/MM/yyyy'}}</mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<div *ngIf="item.comment !== ''">
<div class="feeds-info">{{item.comment}}</div>
</div>
<div *ngIf="item.comment === ''">
<div class="feeds-info">FIN search executed by {{item.user}}.</div>
</div>
</mat-card-content>
</td>
</ng-container>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<div class="footer">
<mat-paginator [length]="" [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 30, 40, 50]" showFirstLastButtons></mat-paginator>
</div>
</div>
и feeds-list.ts
export class FeedListComponent implements OnInit {
displayedColumns: string[] = ['feeds'];
@Input() feedsOverviewData: Feeds[];
@ViewChild(MatPaginator) paginator: MatPaginator;
dataSource = new MatTableDataSource<Feeds>(DATA);
constructor() {
}
У этого компонента каналов также есть дочерний компонент списка каналов
Мой вопрос: если вызов sendFeedsComment возвращает 200 обратно, то эти новые комментарии должны отображаться в списке каналов без загрузки всего сайта.
У меня есть идея, я могу вызвать API getAllFeeds, чтобы получить все комментарии, но этот API будет использоваться в родительском компоненте.
как правильно реализовать
кто-нибудь может мне помочь?
С наилучшими пожеланиями,
Leo