Javascript 重定向到Angular 5中动态生成的html

Javascript 重定向到Angular 5中动态生成的html,javascript,angular,angular-router,Javascript,Angular,Angular Router,我正在用Angular 5建立一个SPA,我正在呼叫一个身份验证和授权服务。 此服务检查我是否有一个会话处于活动状态,是否没有会话或会话是否已过期,然后返回401和带有公司范围登录页面的HTML。 我为打这个电话建立了一个服务,如下所示: @Injectable() export class AuthService { private authServicePath = '/<path-to-the-service>'; private authToken: str

我正在用Angular 5建立一个SPA,我正在呼叫一个身份验证和授权服务。 此服务检查我是否有一个会话处于活动状态,是否没有会话或会话是否已过期,然后返回401和带有公司范围登录页面的HTML。 我为打这个电话建立了一个服务,如下所示:

@Injectable()
export class AuthService {

    private authServicePath = '/<path-to-the-service>';
    private authToken: string;
    private serviceURL: string;
    private requestOptions: any;

    constructor(private http: HttpClient, private cookieService: CookieService) { }

    validateAuth() {
        this.serviceURL = environment.endpoint + this.authServicePath;
        this.authToken = this.cookieService.get('SESSION-TOKEN-COOKIE');
        this.requestOptions = {
            headers: new HttpHeaders(
                {
                    'SESSION-TOKEN-COOKIE': this.authToken
                }
            )
        };

        return this
                .http
                .get(this.serviceURL, this.requestOptions)
                .subscribe(
                    data => {
                        // Do nothing
                    },
                    (err: HttpErrorResponse) => {
                        /*window.document.write = err.error;
                        window.document.close();*/
                    }
                );
    }
}
<html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
      <body>
        <form action="..." ...
我如何告诉我的应用程序将我重定向到此生成的页面

如您所见,我尝试使用
window.document.write
编写一个新的HTML,但没有成功。 我知道Angular Router只能重定向到属于应用程序的组件


提前感谢。

听起来您应该做的是重定向到错误/登录页面,或者显示错误消息,其中部分页面内容由您的服务填充(而不是整个html页面)

如果要执行该操作,只需设置一个属性以包含HTML,然后将其绑定到div元素的InnerHTML,如下所示:

typescript

publicmytmlcode:string='header段落

'

模板


好的,我找到了一种方法。在我看来,这很不礼貌,但这是第一步。 如果有人对此有任何建议,请告诉我

我使用Javascript以旧的方式将生成的HTML内容附加到我的应用程序的
标记中。由于HTML包含一个未命名的表单,我已经这样做了:

(err: HttpErrorResponse) => {
                        if (err.status === 401){
                            document.body.innerHTML = err.error;
                            let form = <HTMLFormElement>document.getElementsByTagName('form')[0];
                            form.submit();
                        }
                    }
(err:HttpErrorResponse)=>{
如果(错误状态===401){
document.body.innerHTML=err.error;
让form=document.getElementsByTagName('form')[0];
表单提交();
}
}
在我看来它很难看,但这是我目前能得到的最好的。如果有人有其他方法,请让我知道。 我会将这个问题标记为已回答,如果有更好的答案,我会很高兴将其标记为正确答案


谢谢

不,不幸的是,该服务返回的页面是我必须显示的整个页面,因此我无法将其嵌入到我的应用程序中,但我必须使用该HTML(即登录页面)。它不是静态的,因为在HTML中有一些预先填充的字段,其中包含有关我的登录请求的信息。@AlejandroEcheverri我明白了-在这种情况下,我认为您必须考虑使用iframe。我发现了一种我不喜欢的方法,因为它看起来很粗糙。如果你有任何意见,请让我知道。因为你必须处理整个html文件,我想不出更好的方法。我同意你的保留意见-但它会起作用的。。。