Angular 提供中的角度2分量变量
组件能否基于其输入提供服务(或可提供的东西)?在我的例子中,我的组件使用一个基于另一个firebase服务的服务,我希望组件提供一个新的firebase服务和一个子服务,这样另一个服务将只访问数据库中的子部分 在我当前的解决方案中,我的组件调用服务的setChild函数来设置子对象,但我很好奇是否可以用上面描述的方式实现 谢谢,Angular 提供中的角度2分量变量,angular,typescript,Angular,Typescript,组件能否基于其输入提供服务(或可提供的东西)?在我的例子中,我的组件使用一个基于另一个firebase服务的服务,我希望组件提供一个新的firebase服务和一个子服务,这样另一个服务将只访问数据库中的子部分 在我当前的解决方案中,我的组件调用服务的setChild函数来设置子对象,但我很好奇是否可以用上面描述的方式实现 谢谢, 塔马斯:不,那是不可能的。当计算装饰器参数时,还没有组件的实例 但是,您可以做的是将服务注入到组件中,并将其添加到提供者中,然后将值传递给服务。当一个子系统也注入相同的
塔马斯:不,那是不可能的。当计算装饰器参数时,还没有组件的实例 但是,您可以做的是将服务注入到组件中,并将其添加到提供者中,然后将值传递给服务。当一个子系统也注入相同的服务时,它们共享相同的值:
@Injectable()
class MyService {
...
}
@Component({
selector: 'parent',
template: 'x'
providers: [MyService],
)}
class Parent {
@Input() someInput;
constructor(private myService:MyService) {
}
ngOnChanges() {
this.myService.sharedValue = this.someInput;
}
}
@Component({
selector: 'descendant',
template: 'x'
)}
class Descendant {
constructor(myService:MyService) {
myService.sharedValueChange.subscribe(val => {
console.log(val);
});
}
}
有关使用
Observable
通知更改创建共享服务的更多详细信息,请参见非常感谢您的回答。我就这样做。