【发布时间】:2020-05-25 02:29:06
【问题描述】:
我是 Angular 和 Observables 的新手。我有一个服务,它接收我想要传递给我的 observable 的 URL,并在每次使用 NgFor 将新 URL 传递给它时呈现数据。任何例子都会有所帮助。请帮助似乎没有任何工作。提前致谢
服务文件
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Event } from '../event/event.interface';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ClientService {
eventUrl ;
constructor(private http: HttpClient) {
}
receiveEvent(eventId){
this.eventUrl = eventId;
console.log(this.eventUrl)
}
renderEvent(eventUrl): Observable<Event[]>{
return this.http
.get<Event[]>(eventUrl)
}
接收组件文件
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { ClientService } from '../service/clientService';
import { HttpParams, HttpClient } from '@angular/common/http';
@Component({
selector: 'hero-review',
templateUrl: './review.component.html',
styleUrls: ['./review.component.css']
})
export class ReviewComponent implements OnInit {
public events = [];
constructor(private _clientService: ClientService) {
}
ngOnInit() {
this._clientService.renderEvent('Need to be dynamic URL').subscribe(data => this.events = data);
}
}
发送组件文件
sendEvent(eventId){
let reqUrl = "myEndpoint" + eventId;
this._clientService.receiveEvent(reqUrl);
}
【问题讨论】:
-
这在语法上看起来不错。您能否提供更多有关您正在努力解决的特定领域的信息,包括您迄今为止尝试过的示例。
-
嗨,Kurt,我更新了示例。发送文件将 url 发送到服务。服务需要将其传递给发出 GET 请求的 Observable。每次传递 URL 时,我都希望 Observable 呈现请求的数据
-
我仍然不明白什么在这里不起作用。接收组件是否在发送组件更新服务中的 url 后的某个时间点加载?
-
Observable 在传递给服务时没有接收到动态 URL。我不确定它在哪里失败。每次发送 URL 时,我都希望更新它
-
我尝试了您的示例,但无法确定主题类型是什么。需要导入吗?
标签: angular observable angular-services ngfor get-request