如何告诉订阅者重试

时间:2017-06-16 00:06:21

标签: angular angular2-observables

我有2个分区,例如左右分区,这些分区的服务器端网址除了分区名称之外是相同的,例如:

'/api/Left/DoThisThing';

'/api/Right/DoThisThing';

我在HttpService(简化)中有这个:

@Injectable()
export class MyHttpService {

    constructor(private http: Http) { }

    private baseUrl = '/api/';
    private selectedDivision: Divisions = Divisions.Left;

    getAll(): Observable<Test[]> {
        return this.http.get(this.baseUrl + Divisions[this.selectedDivision])
            .map((response: Response) => response.json())
            .catch((error: any) => Observable.throw(error.json().error || 'An unknown server error occurred while trying to get all.'));
    }

    selectDivision(division: Divisions) { this.selectedDivision = division; }
}

当然,问题是在我点击强制订阅selectDivision(Divisions.Right)的子组件重新加载的导航链接之前,调用getAll()什么都不做。

我更喜欢这样做的方式是通知getAll()的所有订阅者重试该端点...或者可能导致get请求重新使用新更新的URL。我该怎么做?如果有更好的方法可以做到这一点?

0 个答案:

没有答案