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);
}
同样地,对于对象位置,您可以订阅此主题,并收听更改或广播更改