2017-06-06 3 views
-2

Ich habe die meisten Fragen ähnlich gelesen, aber immer noch, ich verstehe nicht, wie man .find() in meiner App arbeiten.Angular 4 - Wie verwendet man .find() richtig?

Ich habe einen Dienst mit API:

export class VehicleService { 
    private defUrl = 'API'; 

    constructor(private http: Http) { } 

    getVehicleByVehicleId(vehicleid?: any) { 
    const url = (!vehicleid) ? this.defUrl : 'API1&vehicle_id=' + vehicleid; 
    return this.http.get(url) 
     .map(res => res.json()); 
    } 


    searchVehicleId(description?: string) { 
    const url = (!description) ? this.defUrl : 'API2&description=' + description; 
    return this.http.get(url) 
     .map(res => res.json().vehicles); 
    } 
} 

Komponente

export class VehicleComponent implements OnInit { 

    ngOnInit() { 

    this.searchQuery = new FormGroup({ 
     vehicleDescription: new FormControl('', Validators.required) 
    }); 
    } 


    constructor(private vehicleService: VehicleService) { } 

    public fleet: Fleet[]; 
    public description: Description[]; 
    public searchQuery: FormGroup; 
    public searchVehicleId: any; 


    public searchByVehicleId(searchQuery) { 
    this.vehicleService 
     .searchVehicleId(searchQuery.value.vehicleDescription) 
     .subscribe(searchQuery => { 
     this.description = searchQuery; 
     this.searchVehicleId = this.description.find() // <= HOW TO IMPLEMENT THIS? 
    this.vehicleService 
     .getVehicleByVehicleId(this.searchVehicleId) 
     .subscribe(searchQuery => { 
     this.vehicle = searchQuery; 
     }) 
     }); 
    } 
interface Vehicle { 
    status: number; 
    dallases: Vehicle[]; 
} 

interface VehicleDetails { 
    vehicle_id: number; 
    dallassettings: string; 
    dallasupdated: string; 
    dallas_list: DallasList[]; 
} 

interface DallasList { 
    number: number; 
    auth: number; 
} 

////////////////////////////////// 
////////////////////////////////// 

interface Description { 
    vehicles: DescriptionDetails[]; 
} 

interface DescriptionDetails { 
    id: number; 
    custom_description: string; 
    description: string; 
} 

API2

{ 
    "vehicles": [{ 
     "description": "SKODA ROOMSTER", 
     "id": 123456, 
     "custom_description": "" 
    }, { 
     "description": "SKODA ROOMSTER", 
     "id": 123456789, 
     "custom_description": "" 
    }] 
} 

Also, was ich hier zu tun ist: pass description innerhalb FormGroup - vehicleDescription Feld zu searchByVehicleId Methode. Hier möchte ich id von übergeben vehicleDescription velue finden (es ist "description" Feld in API2). Wenn wir die id finden, verwenden wir es weiter in this.vehicleService.getVehicleByVehicleId ...

Hauptproblem ist - ich habe keine Ahnung, wie man richtig implementieren .find().

Dank

+1

https://stackoverflow.com/a/35398031/4826457 –

+0

Gelöst: 'this.searchVehicleId = this.description.find (x => x. id === x.id) .id.toString(); '. Danke für die Hilfe, wenn ich diese Frage früher fand, würde es keine Frage von meiner Seite geben. – Haseoh

Antwort

1

Die MDN docs:

this.searchVehicleId = this.description.find(x => x.id === someId);