Angular 6 个激活的路由快照服务 Firebase

Angular 6 ActivatedRouteSnapshot Service Firebase

想使用我的详细信息组件的 Id 在 firebase 中保存数据(pah:'/patient/:id'

为了保存数据,我在数据服务中这样写:

 createNewTumeur(newTumeur: Tumeur) 
 {
 const id = this.route.snapshot.params['id'];
 console.log(id);
 this.tumeurs.push(newTumeur);
 firebase.database().ref('/patients/'+id).child("tumeur").update(this.tumeurs);
 this.tumeurSubject.next(this.tumeurs);

但是我不能得到 id 的值...请问有什么问题吗?

// my.component.ts

import { ActivatedRoute } from '@angular/router';
import { MyDataService } from './my-data.service';

constructor(private route: ActivatedRoute, private dataService: MyDataService)

createNewTumeur(newTumeur: Tumeur) {
  const id = this.route.snapshot.params['id'];
  console.log(id);
  this.dataService.createNewTumeur(id)
  // And then add the logic into your dataService
}

注意:路由器参数只能在组件中获取,不能在服务中获取。

这是因为服务是属于根注入器的单例。 您可以将路由参数发送到您的服务或在您的组件中提供您的服务(但是这将创建该服务的另一个实例,我个人不推荐这样做)。

Component({
  ...
  providers: [MyDataService]
})
export class MyComponent { ... }