Angular 如何改变路线,使可观察的工作?

Angular 如何改变路线,使可观察的工作?,angular,firebase,asynchronous,observable,routerlink,Angular,Firebase,Asynchronous,Observable,Routerlink,我试图从一个可观察对象加载信息,当我正确输入它加载的路由时,但是当我使用routerLink更改路由时,可观察对象停止显示管道异步的信息 我展示可观测信息的方式如下: 配置文件组件 <ng-container *ngIf="this.observable| async as profilevar; else loading"> <div class="main-content"> <div class=

我试图从一个可观察对象加载信息,当我正确输入它加载的路由时,但是当我使用routerLink更改路由时,可观察对象停止显示管道异步的信息

我展示可观测信息的方式如下:

配置文件组件

<ng-container *ngIf="this.observable| async as profilevar; else loading">
    <div class="main-content">
        <div class="profile-content shadow">
            <div class="profile-content-top">
                <div class="profile-image">
                    <div class="profile-image-avatar">
                        <img src="{{ profilevar?.profile_url }} "
<div class="nav-bar-mobile">
    <div class="element-bar profile" routerLink="/profile" routerLinkActive="selecteditem">
        <i class="fas fa-user-circle"></i>
    </div>
    <div class="element-bar settigs" routerLink="/settings" routerLinkActive="selecteditem">
        <i class="fas fa-cog"></i>
    </div>
</div>

下面是包含要更改路由的元素的组件:

导航栏组件

<ng-container *ngIf="this.observable| async as profilevar; else loading">
    <div class="main-content">
        <div class="profile-content shadow">
            <div class="profile-content-top">
                <div class="profile-image">
                    <div class="profile-image-avatar">
                        <img src="{{ profilevar?.profile_url }} "
<div class="nav-bar-mobile">
    <div class="element-bar profile" routerLink="/profile" routerLinkActive="selecteditem">
        <i class="fas fa-user-circle"></i>
    </div>
    <div class="element-bar settigs" routerLink="/settings" routerLinkActive="selecteditem">
        <i class="fas fa-cog"></i>
    </div>
</div>

什么有效:

  • 通过直接从浏览器路径加载数据
什么不起作用:

  • 当我使用导航栏组件和routerLink更改路线时
变量this.observable包含this.db.object('/profiles/'+vid).valueChanges()

如何解决此问题?

已解决 经过调查,我找到了解决问题的办法

我通过在订阅类型变量中分配observable来解决这个问题

导出类ProfileComponent实现OnInit、OnDestroy{
subscriptionObservable:订阅;
可观察的:可观察的;
构造函数(){
this.subscriptionObservable=this.observable.subscribe((数据:Profile)=>
{...}));
}
恩贡德斯特罗(){
if(this.subscriptionObservable){
this.subscriptionObservable.unsubscribe();
}
}
}
完成组件后,我将取消订阅subscriptionObservable变量

解决 经过调查,我找到了解决问题的办法

我通过在订阅类型变量中分配observable来解决这个问题

导出类ProfileComponent实现OnInit、OnDestroy{
subscriptionObservable:订阅;
可观察的:可观察的;
构造函数(){
this.subscriptionObservable=this.observable.subscribe((数据:Profile)=>
{...}));
}
恩贡德斯特罗(){
if(this.subscriptionObservable){
this.subscriptionObservable.unsubscribe();
}
}
}
完成组件后,我将取消订阅subscriptionObservable变量