网址已更改,但未呈现组件。重新加载页面后才能正常工作

kh1em

我的路由模块设置

app-routing.module.ts

{
        path: '', pathMatch: 'full', canActivate: [AuthGuard],
        component: HomeComponent,
},

{
        path: 'profile', component: ProfileComponent, canActivate: [AuthGuard],
        children: [
            {
                path: 'edit', component: EditComponent
            },
            {
                path: ':username', component: UserComponent
            }
}

Profile.component.html

   <router-outlet></router-outlet>

登录我的应用程序成功后,服务器会响应一个用户,并BehaviorSubject用来发出新用户

在导航栏组件中,我订阅并将其存储到属性用户

验证服务

   user = new BehaviorSubject(null)
   login() { 
      this.http.post('/api/login', {username, password})
      .subscribe((userResponse) => this.user.next(userResponse))
   }

App.component.html

<div *ngIf="isLoggedIn">
  <app-navbar></app-navbar>
  <router-outlet></router-outlet>
</div>

<div *ngIf="!isLoggedIn">
  <router-outlet></router-outlet>
</div>

App.component.ts

isLoggedIn: boolean = false;
ngOnInit() {
    this.authService.user
      .subscribe((user) => {
        if (user === null) {
          this.router.navigate(['/login']);
          this.isLoggedIn = false;
        }
        else {
          this.isLoggedIn = true;
        }
      })
  }

Navbar.component.html

   <a routerLink="/" class="pt-3 pb-3 pl-4 pr-4 active">Home</a>
   <a [routerLink]="['/profile', user.username]" class="pt-3 pb-3 pl-4 pr-4">Profile</a>

问题是当我单击Profile时,地址栏中的url如预期那样更改为/ profile / abc,AuthGuard也可以正常工作并返回true,但是UserComponent未呈现。我仍然留在HomeComponent中

但是,当我在页面上按F5键时,UserComponent已加载,并且导航栏路由正常运行。

我认为问题出在我App-routing.module.tsrouterLink

任何帮助表示赞赏

沙哈尔·肖克拉尼(Shahar Shokrani)

app.component.html应该看起来像这样:

<div *ngIf="isLoggedIn">
    <app-navbar></app-navbar>
</div>
<router-outlet></router-outlet>

<router-outlet>应在启动时加载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果网址的参数发生更改,则重新加载/重新呈现页面-反应

来自分类Dev

链接到已更改的 URL 但未呈现的组件

来自分类Dev

路径更改但未呈现组件

来自分类Dev

更改网站网址后,网址重写无法正常工作

来自分类Dev

Braintree Drop-In UI需要重新加载才能正常工作

来自分类Dev

重新加载后,PHP页面不会更改

来自分类Dev

重新加载页面后如何更改单词

来自分类Dev

不重新加载URL更改页面,React不会呈现

来自分类Dev

状态更改后功能组件不会重新呈现[React]

来自分类Dev

状态更改后,react-redux组件未重新呈现

来自分类Dev

反应路由器 v4 路由已更改但未呈现正确的组件

来自分类Dev

Ajax页面加载后,facebook页面插件无法正常工作

来自分类Dev

网址更改但未渲染组件React Router

来自分类Dev

重新加载数据后,Angular Paginator无法正常工作

来自分类Dev

如果/其他在重新加载页面后仍在工作

来自分类Dev

ajax 请求更改状态后,react 组件不会重新加载

来自分类Dev

将外部网址加载到div,但无法更改已加载页面的样式

来自分类Dev

laravel 5.2页面URL已更改,但未加载视图

来自分类Dev

Gulp.js:重新加载更改后的php / html页面

来自分类Dev

更改哈希后如何使页面不重新加载?

来自分类Dev

页面更改后,如何刷新/重新加载Polymer元素?

来自分类Dev

ajax 页面更改后,Jquery/Javascript 不会重新加载

来自分类Dev

UI-Router-更改$ state无需重新呈现/重新加载页面

来自分类Dev

Geckofx获取已加载的页面网址

来自分类Dev

为什么我必须重新加载页面才能让我的 JS 事件工作?

来自分类Dev

重新加载页面后才能绘制HTML5画布(仅在Google Chrome上)

来自分类Dev

users#create工作正常,但未呈现任何内容

来自分类Dev

在页面已加载后加载脚本时重新初始化dom

来自分类Dev

为什么我的js仅在刷新页面后才能正常工作?

Related 相关文章

  1. 1

    如果网址的参数发生更改,则重新加载/重新呈现页面-反应

  2. 2

    链接到已更改的 URL 但未呈现的组件

  3. 3

    路径更改但未呈现组件

  4. 4

    更改网站网址后,网址重写无法正常工作

  5. 5

    Braintree Drop-In UI需要重新加载才能正常工作

  6. 6

    重新加载后,PHP页面不会更改

  7. 7

    重新加载页面后如何更改单词

  8. 8

    不重新加载URL更改页面,React不会呈现

  9. 9

    状态更改后功能组件不会重新呈现[React]

  10. 10

    状态更改后,react-redux组件未重新呈现

  11. 11

    反应路由器 v4 路由已更改但未呈现正确的组件

  12. 12

    Ajax页面加载后,facebook页面插件无法正常工作

  13. 13

    网址更改但未渲染组件React Router

  14. 14

    重新加载数据后,Angular Paginator无法正常工作

  15. 15

    如果/其他在重新加载页面后仍在工作

  16. 16

    ajax 请求更改状态后,react 组件不会重新加载

  17. 17

    将外部网址加载到div,但无法更改已加载页面的样式

  18. 18

    laravel 5.2页面URL已更改,但未加载视图

  19. 19

    Gulp.js:重新加载更改后的php / html页面

  20. 20

    更改哈希后如何使页面不重新加载?

  21. 21

    页面更改后,如何刷新/重新加载Polymer元素?

  22. 22

    ajax 页面更改后,Jquery/Javascript 不会重新加载

  23. 23

    UI-Router-更改$ state无需重新呈现/重新加载页面

  24. 24

    Geckofx获取已加载的页面网址

  25. 25

    为什么我必须重新加载页面才能让我的 JS 事件工作?

  26. 26

    重新加载页面后才能绘制HTML5画布(仅在Google Chrome上)

  27. 27

    users#create工作正常,但未呈现任何内容

  28. 28

    在页面已加载后加载脚本时重新初始化dom

  29. 29

    为什么我的js仅在刷新页面后才能正常工作?

热门标签

归档