angular - Angular 6在POST后不更新视图
问题描述
我只想提交一个输入,但 angular 不会更新 html 组件上的列表。我正在使用 Web Api 作为后端。
服务:
getRanks(): Observable<Rank[]> {
return this.http.get<Rank[]>(this.rankUrl);
}
组件.ts:
ngOnInit() {
this.getRanks();
}
newRank: any = {};
saveRank(rank: Rank) {
this.rankService.addRank(rank).subscribe();
}
getRanks(): void {
this.rankService.getRanks()
.subscribe(
ranks => {
this.ranks = ranks;
});
}
组件.html:
<div class="col-md-6 text-center">
<input [(ngModel)]="newRank.Name">
<button (click)="saveRank(newRank)">Save</button>
</div>
<div *ngFor="let rank of ranks"> {{rank.Name}}
</div>
我尽可能多地从原始代码中剥离代码,但它的行为仍然相同。我还评论了与 post 和 get 方法无关的所有内容。
我检查了其他答案并尝试使用区域和changeDetection: ChangeDetectionStrategy.Default
如果我刷新页面然后它会显示出来,所以它在数据库中提交但提交后没有显示。
有任何想法吗?我应该提供任何其他信息吗?
谢谢
解决方案
您应该像这样在订阅成功函数中调用 getRanks() 函数:
saveRank(rank: Rank) {
this.rankService.addRank(rank)
.subscribe(_ => this.getRanks());
}
推荐阅读
- mongodb - 如何编写 MongoDb Mongoose 查询以匹配两个属性
- pytorch - PyTorch:在这个简单的例子中,为什么损失不变?
- windows - 批处理脚本将父文件夹名称的一部分添加到里面的 pdfs
- swift - 如何在tableView中将自定义单元格与其内容视图之间的左侧间隙设置为0
- bash - Bash - 动态创建 JSON 字符串并添加为参数
- android - 在 Gradle 插件版本 3.5.2 中找不到 DataBindingComponent 类文件
- r - R - 如何计算具有异构行数的日期之间的值差异
- php - 如何找出如何通过 PHP 在 cURL 中翻译 Postman 查询
- excel - 为什么我会收到“运行时错误 '13':类型不匹配”错误消息?
- django - 将表单值保存到数据库的不同方法