在角度项目之外,还有一个ts类,我正试图从该类通过服务将对象发送到角度组件。
sender.ts
是使用角度服务发送对象的ts类;
export class Sender {
injector;
servicePointer;
myData: Object;
constructor() {
this.injector = Injector.create({
providers: [
{
provide: ShareDataService,
deps: []
},
]
});
this.servicePointer = this.injector.get(ShareDataService);
}
public send() {
this.myData = {
name: "Robert",
visible: true
}
return this.servicePointer.dataVisibility(this.myData);
}
}
share-data.service.ts
是一个角度服务,它成功地从
发件人.ts
班级:
@Injectable({
providedIn: 'root'
})
export class ShareDataService {
changeDataSource = new BehaviorSubject<Object>({});
public dataUpdate$ = this.changeDataSource.asObservable();
public dataVisibility = (dataInfo: Object) => {
//console.log(dataInfo);
this.changeDataSource.next(dataInfo);
}
}
app.component.ts
包括
Sender
TS类和调用
.send()
方法:
export class AppComponent implements OnInit {
private foo:Sender.Sender = new Sender.Sender();
constructor() {}
ngOnInit() {
this.foo.send();
}
}
至少,有一个
receive
订阅服务的组件:
export class ReceiverComponent implements OnInit {
constructor(private shareDataService: ShareDataService) { }
receivedData;
ngOnInit() {
this.shareDataService.dataUpdate$.subscribe(success => {
this.receivedData = success;
console.log(this.receivedData);
})
}
}
并且总是从服务返回空对象,尽管带有数据的对象会到达服务(console.log(datainfo))。
是什么导致了这个问题?在
service
有
@Injectable({
providedIn: 'root'
})
具有根应用程序注入器和
sender
类中还提供了一个来自服务的注入器。这可能是问题所在吗?如果是,是否有其他方法注入服务?
还有一个
stackblitz
上面解释了代码。