ich eine beobachtbare eines Arrays haben:Angular 4 rxjs: Filter Daten in beobachtbaren Array
schools: Observable<SchoolVM[]>;
Und ich brauche diese beobachtbaren in eine andere für eine automatische Vervollständigung wählen
filteredSchools: Observable<SchoolVM[]>;
Ich abonniere filtern die form.valueChanges
this.formChange = this.searchForm.valueChanges
.debounceTime(300)
.subscribe(value => {
this.filteredSchools = this.schools.filter(s => s.SchoolName == value);
});
ich habe einen Fehler auf: Anwesen ‚School‘ nicht auf Typ Sch existiert‘ oolVM [] ' Wie kann ich es lösen? Und auch: Ich muss nach 2 verschiedenen Kriterien filtern. Es ist richtig, zu filtern, wie
this.filteredSchools = this.schools.filter(s => s.SchoolName == value ||
s => s.SchoolName == value);
ich die Funktion folgende Aakash Jain's answer neu geschrieben, wie folgt aus:
this.formChange = this.searchForm.valueChanges
.debounceTime(300)
.subscribe(value => {
this.filteredSchools = this.schools.map(schools => {
return schools.filter((school: SchoolVM) => (school.SchoolName === value) || (school.City === value));
// this.logger.info(this.filteredSchools);
});
});
und jetzt bekomme ich die Fehlermeldung „schools.filter“ keine Funktion.
die beobachtbaren
schools: Observable<SchoolVM[]>;
von einem Httpclient Aufruf gefüllt ist:
this.schoolService.filterSchools(arg)
.subscribe(d => {this.schoolsToFilter = d; })
Und im Dienst:
filterSchools(arg: string): Observable<any> {
return Observable.from(this.http.get('/api/school/find/' + arg));
Vielleicht ein Problem mit beobachtbaren ihr ist, aber die Schulen beobachtbar ist gut gefüllt:
{ "SchoolID": 13028, "School": "100% Conduite", "Stadt": "MEUDON", "ZipCode": "92190", "Street": "17 rue des Gallons" , "Phone": "01 49 66 06 02" }, { "SchoolID": 6803, "School": "100% PERMIS" "Stadt": "BADONVILLER" "ZipCode": "54540", "Street": "25 rue du Maréchal Foch", "Phone": "" }, ...
schrieb ich die automatische Auswahl Code wie folgt aus: this.formChange = this.searchForm.valueChanges .debounceTime (300) .subscribe (Wert => { this.filteredSchools = this.schools.map (Schulen => { zurück schools.filter ((schule: SchoolVM) => (school.SchoolName === wert) || (school.City === wert)); // this.logger.info (this.filteredSchools); }); }); und jetzt bekomme ich den Fehler "schools.filter ist keine Funktion". Irgendwelche Hilfe bitte? – Marcos
@Marcos versuchen 'this.formChange = this.searchForm.valueChanges.debounceTime (300) .subscribe (value => this.schools.subscribe (Schulen => console.log (Schulen)))' und lassen Sie mich wissen, was es protokolliert. –
Vielen Dank für Ihre Hilfe Aakash. Mit Ihrer Funktion habe ich den Fehler ERROR TypeError: _this.schools.subscribe ist keine Funktion. Vielleicht, weil Schulen Observable ist? –
Marcos