typescript - Angular - map är inte en funktion
Jag försöker filtrera ett Observable i mitt Angular-projekt, men det står: "... .map är inte en funktion" så kan du förklara vad som är fel med min kod?
tasks.component.ts (map importerat även från rxjs/operators)
ngOnInit() {
this.tasks = this.tasksService.tasks.map(x => x.filter(y => y.isDone == this.completed));
this.tasksService.getTasks();
}
Och här är min tjänst som tillhandahåller Observable:
task.service.ts
export class TasksService {
private _tasks = new BehaviorSubject<Task[]>([]);
tasks = this._tasks.asObservable();
constructor(private http : Http) {
console.log('Tasks Service is initialized...');
}
getTasks() {
this.http.get(URL).subscribe(x => {
this._tasks.next(x.json());
});
}
Svar #1
Importera map på detta sätt om du använder rxjs-version mindre än 6.
import 'rxjs/add/operator/map';
Om du använder rxjs version 6 eller högre, måste du först importera operatören så här:
import { map } from 'rxjs/operators';
För det andra måste du använda pipe före map:
this.tasks = this.tasksService.tasks.pipe(
map(x => x.filter(y => y.isDone == this.completed))
);
Svar #2
Using Observable.subscribe directly should work.like below
@Injectable()
export class HallService {
public http:Http;
public static PATH:string = 'app/backend/'
constructor(http:Http) {
this.http=http;
}
getHalls() {
// ########### No map
return this.http.get(HallService.PATH + 'hall.json');
}
}
export class HallListComponent implements OnInit {
public halls:Hall[];
/ *** /
ngOnInit() {
this._service.getHalls()
.subscribe(halls => this.halls = halls.json()); // <<--
}
}
