Anwendung initialisiert werdenAngular2 - Warten auf Service Variable
- MapViewComponent
- SearchComponent (ein Objekt der MapViewComponent erfordert)
- MapService
Bisher stellte ich die SearchComponent
innen die MapViewComponent
s Vorlage, so konnte ich es an die SearchComponent
übergeben, indem Sie @Inject(forwardRef(() => MapViewComponent))
verwenden. Aber da die Suchkomponente irgendwo anders im Layout/HTML-DOM angezeigt werden sollte, muss ich einen Dienst verwenden, um die MapViewComponent
an die Suche zu übergeben.
MapViewComponent.ts:
export class MapViewComponent {
@Output() onMapViewCreated = new EventEmitter();
private _view: any = null;
constructor(private mapService: MapService, private elRef: ElementRef) {
}
ngOnInit() {
this._view = new MapView({
container: this.elRef.nativeElement.firstChild,
map: this._mapService.map,
center: [5.44, 36.947974],
rotation: 0,
autoResize: true
})
this._view.then((view) => {
this.onMapViewCreated.next(view);
this._mapService.setView(view);
});
SearchComponent.ts:
export class SearchComponent {
constructor(private elRef:ElementRef, private mapService: MapService) {
var view = mapService.getView();
}
}
MapService.ts:
@Injectable()
export class MapService {
public setView(mv: MapView){
this.view = mv; // what do I have to do here..?
}
public getView(){
return this.view; // .. and here?
}
}
Es offensichtlich wird nicht so funktionieren, weil getView()
könnte, bevor aufgerufen setView()
.
Sie an'Observable 'oder' 'Versprechen als Ansicht speichern soll, dann zurückkehren Sie die beobachtbare/Versprechen in Ihrem Getter, diese erlaubt es dir, 'getView(). dann (deine Funktion ...)' zu machen und dein Versprechen aufzulösen/in deiner beobachtbaren Stelle auszustrahlen, sobald die Sicht eingestellt ist. Bearbeiten: Was ist MapView? –
Supamiu