每次有提交到 json 服务器时,Angular 应用程序都会重新启动

Posted

技术标签:

【中文标题】每次有提交到 json 服务器时,Angular 应用程序都会重新启动【英文标题】:Angular app restarting every time there is a submission to json server 【发布时间】:2021-12-27 12:56:32 【问题描述】:

每次我按下按钮将一些数据提交到我的应用程序的假后端数据库 (json server API) 时,突然间,没有任何修改或更新,页面会重新加载。

这发生在 ChromeFirefox 以及 Edge 上。

我环顾四周,发现了一些将提交按钮类型从 type="submit" 更改为 type="button" 的建议(例如 here),但这对我不起作用,因为那时我的表单数据没有提交。

有没有办法以编程方式做到这一点?最近有人遇到过这种情况吗?

附言目前,我并没有“观看”我的“db.json”作为避免此问题的解决方法,但我必须修复它才能让我的json server API 运行...

编辑

这是我的form 代码:

<form #postForm="ngForm" (ngSubmit)="onAnnotateSelection(postForm.value)">

        <div class="form-group">
            <textarea name="chosenTitle" rows="1" class="form-control" placeholder="Enter a title for your annotation here..."
                [(ngModel)]="chosenTitle">
            </textarea>

            <textarea name="highlightedText" id="selectedText" rows="3" class="form-control" placeholder="Your highlighted text will appear here..."
                [(ngModel)]="highlightedText" (mouseup)="mouseUp()">
            </textarea>
        </div>

        <button class="btn btn-outline-success" type="submit" [disabled]="!postForm.valid">
            Annotate your highlighted/selected Text
        </button>

        <a class="btn btn-secondary active" role="button" [href]="fileUrl" download="annotations.txt">
            Download All Annotations
        </a>

</form>

这段代码很好。我怀疑表单代码中有什么东西。我怀疑我的package-lock.json 发生了一些变化,因为这个锁定文件曾经在我的gitignore 文件中,然后我了解到它实际上应该在版本控制之下,所以我这样做了。是否与锁定文件的更改有任何关系?

【问题讨论】:

如何将数据绑定到表单控件?能否包含模板 sn-p(您使用的是响应式表单还是模板驱动的)? 10$ 您的表单被一个额外的&lt;form&gt; 标签包裹(您是在第三方网站上托管它吗?)请在最上面的&lt;form&gt; 标签之间添加模板。 @OctavianMărculescu 感谢您的回复。它是模板驱动的。我的提交是&lt;button class="btn btn-outline-success" type="submit" [disabled]="!postForm.valid"&gt; Annotate your highlighted/selected Text &lt;/button&gt; 我将发布我的表单作为对问题的编辑... @Stavm 如何获得我的 10 美元? :-) 【参考方案1】:

您可以停止提交表单并使用

<button
  class="btn btn-outline-success"
  type="button"
  [disabled]="!postForm.valid"
  (click)="onAnnotateSelection(postForm.value)">
  Annotate your highlighted/selected
</button>

您还应该从form 元素中删除ngSubmit

【讨论】:

以上是关于每次有提交到 json 服务器时,Angular 应用程序都会重新启动的主要内容,如果未能解决你的问题,请参考以下文章

angular2^ typescript 将 文件和Json数据 合并发送到服务器(1.客户端处理)

Angular 4 表单重置提交到服务器

在 Angular 2 中加载配置 JSON 文件

将项目发布到 JSON 服务器 db-Angular

Angular 2 提交时触发表单验证

仅使用 Angular 7 将 json 数据写入本地 JSON 文件