1

当我在 Angular 中开发并创建视图时,我总是使用 routerLink 从一个视图导航到另一个视图。最近我看到使用 Angular 制作的重要页面使用 href 而不是 routerLink 来路由网站上的视图。我的问题是,什么时候在 Angular 中使用 href 而不是 routerLink 方便,为什么?是不是给人一种不是SPA的感觉?

如果是这样,我不理解它,因为它失去了 Angular 路由的全部潜力。

一些例子是

https://brandstory.in/
https://www.forbes.com/sites/karstenstrauss/2019/01/22/the-most-sustainable-companies-in-2019/#46dd14376d7d
https://about.google/
https://www.colgate.es/
https://marketingplatform.google.com/intl/es/about/enterprise/

提前致谢

4

2 回答 2

3

当我们在 Angular 中使用href时,应用程序会丢失其状态,并且整个应用程序会重新加载。但是当我们使用routerlink时,应用程序的状态保持不变。例如,假设您的 Angular 项目中有两个页面/组件,分别命名为第二个和第三个。

<div class="nav">
  <p>Using "href"</p>
  <ul>
    <li><a href="/" >1</a></li>
    <li><a href="/second" (click)="onClick($event)">2</a></li>
    <li><a href="/third">3</a></li>
  </ul>
</div>
<hr>
<div class="nav">
  <p>Using "routerLink"</p>
  <ul>
    <li><a routerLink="/">1</a></li>
    <li><a routerLink="/second">2</a></li>
    <li><a routerLink="/third">3</a></li>
  </ul>
</div>
<hr>
<div class="page-content">
  <p>Page Content</p>
  <router-outlet></router-outlet>
  <hr>
  <p>Input Field</p>
  <app-input></app-input>
</div>

在上面的示例中,如果您在输入字段中键入某些内容并使用href导航进行导航,则该状态将丢失。但是,当您使用routerlink导航进行导航时,您将拥有该输入文本。

让我们看看屏幕后面发生了什么:-

<li><a href="/second" (click)="onClick($event)">2</a></li>

onClick(event: Event) {
    event.preventDefault();
  }

如果您阻止href的默认操作,您将看到该页面不会重新加载routerlink中发生的情况,这仅意味着routerlink也使用href进行导航,但阻止了其默认行为。

于 2019-10-30T19:08:13.640 回答
1

href用于与a标签和routerLink路由一起使用的外部链接。您不能href与任何其他标签一起使用,a只能与标签一起使用,但您可以将routerLink装饰器与其他标签一起使用。

hrefa标签的一个属性,routerLink是一个 Angular 装饰器。

于 2019-10-30T19:10:49.113 回答