在Angular中异步使用window.open

时间:2018-01-02 12:35:22

标签: javascript angular typescript browser tabs

我有以下代码,当用户按下表格中的按钮时,它会发出服务器请求并相应地打开新标签或显示错误

     search() {
        const serial = this.searchForm.get('searchValue').value;
        this.service.check(serial)
            .subscribe(resp => {
                if (resp) {
                    this.denied = false;
                    window.open(`/path?serial=${serial}`);
                } else {
                    this.denied = true; //display error in the HTML
                }
            });
      }

和表格(修改)如:

<form (ngSubmit)="search()" [formGroup]="searchForm">
    <input formControlName="searchValue">
    <button>Search</button>
</form>

问题(正如预期的那样)是浏览器不允许window.open,除非用户授权。

有没有解决方法?也许我的代码有些重构?操纵工作流程?

P.S:我不想这样做:

newTab = window.open();
this.service.check(serial)
    .subscribe(resp => {
        if (resp) {
            this.denied = false;
            newTab.location.href = `/path?serial=${serial}`;
            ....

因为它不确定服务是否会以真或假的方式响应。

0 个答案:

没有答案