Edge - 在 Angular iframe 上导航将 history.state 设置为 null

Edge - navigating on Angular iframe sets history.state to null

我们有一个 Angular 7 应用程序,它位于我们所有客户网站的 iframe 中。应用程序内的所有导航都是通过此助手完成的 class:

import {Injectable} from '@angular/core';
import {Router} from "@angular/router";

@Injectable()
export class NavigationService {

constructor(private router: Router)
{}

    private navigate(path, queryParams = {}){
        this.router.navigate([path], {
            queryParams: queryParams,
            skipLocationChange: true
        }));
    }
}

我们的一个客户有一些 JS 代码(在他们的主站点上,而不是我们的 iframe)试图访问 history.state.persistent *再次,在主 window 上)。在 Chrome 和 Firefox 上一切正常,但在 Microsoft Edge 上 history.state 为空。

我们确定是我们的 iframe 中的某些东西导致了它,因为删除 iframe 可以解决问题。我们还 console.log 以设定的时间间隔获取历史记录对象,我们看到在应用程序初始化期间的某个时刻,state 字段变为空。

查看 Angular 路由器文档我找不到任何相关的东西,有什么想法吗?

谢谢

我不确定到底是什么导致了这个错误,但我认为您可能想测试 RouterModule.forRoot() 上的一些 ExtraOptions 设置。

interface ExtraOptions {
    useHash?: boolean;
    initialNavigation?: InitialNavigation;

}

https://angular.io/api/router/ExtraOptions