Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 提供中的角度2分量变量_Angular_Typescript - Fatal编程技术网

Angular 提供中的角度2分量变量

Angular 提供中的角度2分量变量,angular,typescript,Angular,Typescript,组件能否基于其输入提供服务(或可提供的东西)?在我的例子中,我的组件使用一个基于另一个firebase服务的服务,我希望组件提供一个新的firebase服务和一个子服务,这样另一个服务将只访问数据库中的子部分 在我当前的解决方案中,我的组件调用服务的setChild函数来设置子对象,但我很好奇是否可以用上面描述的方式实现 谢谢, 塔马斯:不,那是不可能的。当计算装饰器参数时,还没有组件的实例 但是,您可以做的是将服务注入到组件中,并将其添加到提供者中,然后将值传递给服务。当一个子系统也注入相同的

组件能否基于其输入提供服务(或可提供的东西)?在我的例子中,我的组件使用一个基于另一个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
通知更改创建共享服务的更多详细信息,请参见非常感谢您的回答。我就这样做。