【问题标题】:How to wait for the url to reload in angular 2 app如何等待 url 在 Angular 2 应用程序中重新加载
【发布时间】:2016-06-10 15:55:30
【问题描述】:

我在角度 2 中遇到了这个问题。我刷新了 url 并希望等待页面完成加载 url。然后我想做某事。不幸的是,我没有成功:

getLoginScreen() {
  return this.http.get(myService.LOGIN_URL)
.flatMap(result => this.changeBrowserUrl())
.subscribe( result => //i want to do sth when the page is loaded//);
}

changeBrowserUrl(): Observable<any> {
return Observable.create( observer => {
window.location.href = myService.LOGIN_URL;
observer.next();
});
}

【问题讨论】:

  • 等待 url 是什么意思?网址或回复?什么是……?
  • “我想在页面加载时做某事”有什么问题?
  • 我在第一页(我的默认应用程序页面)。然后我重定向到另一个网址。我想等待该页面加载。当它完成加载时,我想从那个新的 url 地址获取参数。
  • 上下文等待的意思。您想显示微调器或其他内容,或者您​​正在谈论页面生命周期挂钩?
  • 更改 window.location.href 会触发页面重新加载。 Angular 2 必须再次加载自己。我建议对 domready 使用纯 JavaScript(请参阅 developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

标签: javascript typescript angular rxjs observable


【解决方案1】:

你不能以你正在尝试的方式做到这一点。当你加载一个新的 URL 时,当前页面被卸载,新页面被加载。

您的 2 个选项是:

A - 只需在新页面中添加一些 JavaScript,以便在加载时进行处理。

B - 构建单页应用

【讨论】:

  • 我有一个单页应用程序,但我必须通过他们提供的登录服务转到其他组件,从他们那里获取身份验证令牌,以便有可能向他们提出数据请求。
  • 然后只需在应用程序的启动代码中添加一些代码,以检查登录服务参数的 url。如果它们不存在,那么您的应用程序在登录之前正在运行。如果他们在那里,那么它在登录后运行
猜你喜欢
  • 2018-05-09
  • 1970-01-01
  • 2019-02-17
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2019-03-14
  • 2020-05-09
相关资源
最近更新 更多