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 { ... }
想使用我的详细信息组件的 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 { ... }