有一段时间,我注意到我有一些XHR结束时没有HTTP状态,但状态已取消或失败。
它取决于Chrome。在Firefox上我没有成功。
我的应用程序适用于Angular 4和RxJs 5。
是否有任何解决方案可以帮助我捕捉“此错误”。我把它称为“错误”但是没有真正的错误,因为如果有的话我可以很容易地抓住它们。
在RxJs中,当我使用catch时它不会触发,也不会触发(或者它会在我的订阅结束后)。 我也试过forkJoin,zip或concat,flatMap或switchMap之类的东西,但似乎没什么用。
答案 0 :(得分:2)
正如你的评论中所提到的,当你在View页面上显示这些内容时(即.html),当你遇到XSS问题时,catch不会触发。我认为你需要使用DomSanitizer。
DomSanitizer通过清理值以便在不同的DOM上下文(Detail description of DomSanitization)中安全使用来帮助防止跨站点脚本安全漏洞(XSS)
在component.ts
文件中使用
import { DomSanitizer } from '@angular/platform-browser';
this.yourVariable = domsanitizer.bypassSecurityTrustHtml('<p>stack Overflow</p>');
并在视图中使用yourVariable
,如下所示
<div [innerHtml]="yourVariable"></div>
这不会给你铬错误。
答案 1 :(得分:0)
我不确定取消的请求是否会触发错误状态,但您也可以向可观察链添加超时,这会在最后触发错误。
http.get(..).timeout(2000).catch()