Angular 2的window.location.href等效方法是什么?

16

如何在Angular 2中导航到不同的URL?我知道我们可以使用JavaScript的

window.location.href = '...';

但这似乎不太对,并会导致页面刷新。我相信Angular 2应该有功能,可以让您在不刷新页面的情况下在URL之间移动。只是我在文档中找不到它。

提前感谢!

1个回答

13

根据文档,您可以使用Router及其navigate函数来更改当前状态,并在必要时传递参数:

import {Component, ...} from 'angular2/angular2';
import {Router, ...} from 'angular2/router';
import {HomeCmp} from '../home/home';

@Component({
  selector: 'app',
  // params of your component here
})
@RouteConfig([
  { path: '/', component: HomeCmp, as: 'MyHome' },
  // your other states here
])

export class AppCmp {
  router: Router;
  constructor(router: Router) {
    this.router = router;
  }
  navigateToHome() {
    // for example, that's how we can navigate to our home route
    this.router.navigate(['./MyHome', {param: 3}]);
  }
}

这里是官方文档链接。

此外,这是一个种子项目的链接,其中有一个很好的使用路由器的示例。


6
这仅适用于在应用程序内导航。例如,您无法使用此功能路由到完全外部的URL,如 http://www.cnn.com - Michael Oryl
8
如果需要导航到外部网址,您可以简单地使用 window.location.href='http://www.cnn.com'。否则,请按照答案进行操作。 - MacKentoch
6
那只是无法测试的可怕之处。@MacKentoch - user2115377
window.location.href = ...(用于非 Angular URL)的等效函数是 location.go()。具体可以参考:https://angular.io/api/common/Location#go - Andriy
1
请注意,location.go() 不会重定向页面,只会更改历史记录 API 状态。如果您需要重定向,则可以将文档 (import { DOCUMENT } from '@angular/common';) 注入到构造函数中 (@Inject(DOCUMENT) private document: Document) 并使用 this.document.location.href = ... - Andriy
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接