Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
Javascript 角度6:如何在两个对象之间绑定道具?(服务及本地)_Javascript_.net_Angular_Data Binding - Fatal编程技术网

Javascript 角度6:如何在两个对象之间绑定道具?(服务及本地)

Javascript 角度6:如何在两个对象之间绑定道具?(服务及本地),javascript,.net,angular,data-binding,Javascript,.net,Angular,Data Binding,我将服务与对象一起使用: @Injectable({ providedIn: 'root' }) export class MyService{ public myObject: AClass; constructor() { this.myObject= new AClass(); } } 我在一些组件中注入了这个 其中一个是父母,其余的是孩子。 我不想使用@Input()和@Output(),因为在子组件中有很多道具 在每个孩子的构造中,我都有这样一个: publ

我将服务与对象一起使用:

@Injectable({
  providedIn: 'root'
})
export class MyService{
  public myObject: AClass;

  constructor() {
    this.myObject= new AClass();
  }
}
我在一些组件中注入了这个

其中一个是父母,其余的是孩子。 我不想使用@Input()和@Output(),因为在子组件中有很多道具

在每个孩子的构造中,我都有这样一个:

public localObject;

constructor(myService: MyService) {
    this.localObject = myService.myObject
}
localObject用于html中,例如:

问题是:


如果在父I更新服务模型中(在api调用或其他操作之后),则不会更新子对象的LocalObject。(未绑定)且“”的值未更改。

首先在服务依赖项中添加访问修饰符:

公开

构造函数(公共myService:myService){

私人

构造函数(私有myService:myService){}
get myObject(){返回this.myService.myObject;}

最好使用
主体/行为主体
或某种可观察的

一种方法是

@Injectable({
  providedIn: 'root'
})
export class MyService{
  public subjectOne;
  public myObject: AClass;

  constructor() {
    this.myObject= new AClass();
    this.subjectOne = new BehaviorSubject<AClass>(this.myObject);
  }
}

public localObject;

constructor(myService: MyService) {
    myService.subjectOne.subscribe(data => this.localObject = data);
}

changeHandler(event: Event) {
    myService.subjectOne.next(event.target.value);
}

<input [value]="localObject.name" (change)="changeHandler($event)" />
@可注入({
providedIn:'根'
})
导出类MyService{
公共主体;
公共对象:AClass;
构造函数(){
this.myObject=new AClass();
this.subjectOne=新的行为主体(this.myObject);
}
}
公共本地对象;
构造函数(myService:myService){
订阅(数据=>this.localObject=data);
}
changeHandler(事件:事件){
myService.subjectOne.next(event.target.value);
}
同样地,对于对象位置,您可以订阅此主题,并收听更改或广播更改