是否有办法在布线时重新加载组件?

问题描述 投票:0回答:1

这是我的Usercomponent.ts

export class UserComponent implements OnInit{

  cards: Cardint[];
  mySubscription: any;

  constructor(public auth: AuthService , private arrayService: ArrayService, public cardService: CardService,private router: Router,) {


  }

  ngOnInit() {
    this.cardService.getcards().subscribe( cards => {
      this.cards=cards;
  })
  }

book='BookNow'

  onUserClick(card)
  {
      this.arrayService.card = card;
  }

}

这是我的Cardservice.ts

export class CardService {
  cards: Observable<Cardint []>
  cardCollection : AngularFirestoreCollection<Cardint>;
  constructor(public afs: AngularFirestore) {
    this.cards= this.afs.collection('cards').valueChanges();
   }

 getcards(){
   return this.cards;
 }

}

我的app-routing.module.ts

const routes: Routes = [

    { path: "", component: UserComponent},
    { path: "login", component: LoginComponent},
    { path: "signup", component: RegisterComponent},
    { path: "ticket", component: TicketComponent},
    { path: "user", component: UserComponent}

];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

问题:我正在使用cardservice从ngOnit方法的firebase获取数据(卡详细信息)。最初,我正在获取数据,但是当我导航到其他某个组件并返回时,不会获取数据。

我认为问题在于onInit方法,因为在组件创建时会调用一次。所以我想到了导航后重新加载或刷新组件(用户组件)。

建议解决此问题的方法。我对棱角非常陌生,如果有任何愚蠢的错误,请原谅。

angular typescript angular2-routing
1个回答
0
投票

与OnInit无关。这一切都与您的观察力有关。您有一个可观察到的高温,但请尝试将其用作冷态。您的代码应在this.afs.collection('cards').valueChanges()发出下一个值后立即起作用。

签出:Cold and hot observables

© www.soinside.com 2019 - 2024. All rights reserved.