Dieses Problem sollte ziemlich einfach sein: Ich möchte den Status jeder Abfrage in ein Array namens currentValues schieben. Leider ist die currentValues-Array unpopulated bleibt (die Ausgabe von Prüfwerte ist 0vs2. Was ich hier fehlt?Array-Push funktioniert nicht richtig
@Input() public wantedValue: string[];
@Input() public querySensor: string[];
@Input() public slideId: number;
@Output() wantedStateAccievedEvent: EventEmitter<any> = new EventEmitter<any>();
public currentValues: string[] = [];
initItems() {
for (let sensor of this.querySensor) {
console.log("Sensor: " + sensor);
this.itemService.getMockItemState(sensor).subscribe(
status => { this.currentValues.push((status)); });
}
this.checkValues();
}
checkValues(): void {
console.log("Called checkValues" + this.currentValues.length + "vs " + this.wantedValue.length);
let i = 0;
let allSatisfied: boolean;
for (let value of this.currentValues) {
console.log("Wert: " + value + '\n');
if (this.wantedValue[i] !== value) {
allSatisfied = false;
}
i++;
}
if (allSatisfied === true) {
this.wantedStateAccievedEvent.emit({slideId: this.slideId, stateAccieved: true });
}
Mögliche Duplikat [Angular 2 - Daten direkt von einem Observable zurückgeben] (https://stackoverflow.com/questions/37867020/angular-2-return-data-directly-from-an- observable) – jonrsharpe
Haben Sie überprüft, was der Wert des 'status' ist? Was ist die Ausgabe, wenn Sie Folgendes hinzufügen: 'console.log (status ');'? – mok
Hallo, der Status hat immer einen Wert - die ganze Sache funktionierte ohne Verwendung von Arrays, nach Änderung von wantedVaule und querySensor zu Arrays erschien das Problem – jibjapda